[PATCH 2 of 7] bundle2: add a 'salvageoutput' method on bundle20

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Apr 16 04:25:44 CDT 2015


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1429168564 14400
#      Thu Apr 16 03:16:04 2015 -0400
# Node ID 3e1f69627291b38adf39a87a78cf48089f767a24
# Parent  878a6e0f8c834aec2cc8c50d65b9ab804644b73c
bundle2: add a 'salvageoutput' method on bundle20

This method returns a copy of every 'output' parts added to the bundler.

This is the second step in our quest for preserving the server output on error
(issue4594). We want to be able to copy the output parts from the aborted reply
into the exception bundle.

The function will be used in a later patch.

diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -478,10 +478,22 @@ class bundle20(object):
                 value = urllib.quote(value)
                 par = '%s=%s' % (par, value)
             blocks.append(par)
         return ' '.join(blocks)
 
+    def salvageoutput(self):
+        """return of list with a copy of all output parts in the bundle
+
+        This is meant to be used during error handling to make sure we preserve
+        server output"""
+        salvaged = []
+        for part in self._parts:
+            if part.type.startswith('output'):
+                salvaged.append(part.copy())
+        return salvaged
+
+
 class unpackermixin(object):
     """A mixin to extract bytes and struct data from a stream"""
 
     def __init__(self, fp):
         self._fp = fp


More information about the Mercurial-devel mailing list