bundle2: also capture hook output during processing stable
authorPierre-Yves David <pierre-yves.david@fb.com>
Thu, 23 Apr 2015 17:03:58 +0100
branchstable
changeset 24849 aff2aca3420e
parent 24848 2f88821856eb
child 24850 6b81309d15a7
bundle2: also capture hook output during processing External hook used to directly write on stdout and stderr. As a result their output was not captured by the bundle2 processing. This resulted in confusing out of order output on the client side. We are now capturing hooks output in this context.
mercurial/bundle2.py
mercurial/exchange.py
tests/test-bundle2-exchange.t
--- a/mercurial/bundle2.py	Thu Apr 23 14:57:39 2015 +0100
+++ b/mercurial/bundle2.py	Thu Apr 23 17:03:58 2015 +0100
@@ -354,7 +354,7 @@
         # itself represents a defect of a different variety).
         output = None
         if op.reply is not None:
-            op.ui.pushbuffer(error=True)
+            op.ui.pushbuffer(error=True, subproc=True)
             output = ''
         try:
             handler(op, part)
--- a/mercurial/exchange.py	Thu Apr 23 14:57:39 2015 +0100
+++ b/mercurial/exchange.py	Thu Apr 23 17:03:58 2015 +0100
@@ -1303,7 +1303,7 @@
                 exc.duringunbundle2 = True
                 if r is not None:
                     parts = exc._bundle2salvagedoutput = r.salvageoutput()
-                    repo.ui.pushbuffer(error=True)
+                    repo.ui.pushbuffer(error=True, subproc=True)
                     def recordout(output):
                         part = bundle2.bundlepart('output', data=output,
                                                   mandatory=False)
--- a/tests/test-bundle2-exchange.t	Thu Apr 23 14:57:39 2015 +0100
+++ b/tests/test-bundle2-exchange.t	Thu Apr 23 17:03:58 2015 +0100
@@ -549,6 +549,7 @@
   > reason =
   > [hooks]
   > pretxnclose.failpush = false
+  > txnabort.failpush = echo 'Cleaning up the mess...'
   > EOF
 
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
@@ -564,6 +565,7 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: transaction abort!
+  remote: Cleaning up the mess...
   remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
   [255]
@@ -576,6 +578,7 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: transaction abort!
+  remote: Cleaning up the mess...
   remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
   remote: pre-close-tip:e7ec4e813ba6 draft 
@@ -589,6 +592,7 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: transaction abort!
+  remote: Cleaning up the mess...
   remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
   [255]