[PATCH 12 of 14 FIX-bundle2] bundlerepo: uncompress changegroup in bundle1 case only

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Oct 20 09:36:28 CDT 2015


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1445270648 -7200
#      Mon Oct 19 18:04:08 2015 +0200
# Node ID d313c8307c6b25c4df47125d6e1617ff968830ff
# Parent  5a5bdcfb1d79add813b938e97c82d8a76cb59736
# EXP-Topic generaldelta
# Available At http://hg.netv6.net/marmoute-wip/mercurial/
#              hg pull http://hg.netv6.net/marmoute-wip/mercurial/ -r d313c8307c6b
bundlerepo: uncompress changegroup in bundle1 case only

Uncompressing bundle2 need to be handled differently.

diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -273,15 +273,10 @@ class bundlerepository(localrepo.localre
             self._url = 'bundle:' + bundlename
 
         self.tempfile = None
         f = util.posixfile(bundlename, "rb")
         self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename)
-        if self.bundle.compressed():
-            f = _writetempbundle(self.bundle.read, '.hg10un', header='HG10UN')
-            self.bundlefile = self.bundle = exchange.readbundle(ui, f,
-                                                                bundlename,
-                                                                self.vfs)
 
         if isinstance(self.bundle, bundle2.unbundle20):
             cgparts = [part for part in self.bundle.iterparts()
                        if (part.type == 'changegroup')
                        and (part.params.get('version', '01')
@@ -297,10 +292,16 @@ class bundlerepository(localrepo.localre
             part = cgparts[0]
 
             part.seek(0)
             self.bundle = changegroup.packermap[version][1](part, 'UN')
 
+        elif self.bundle.compressed():
+            f = _writetempbundle(self.bundle.read, '.hg10un', header='HG10UN')
+            self.bundlefile = self.bundle = exchange.readbundle(ui, f,
+                                                                bundlename,
+                                                                self.vfs)
+
         # dict with the mapping 'filename' -> position in the bundle
         self.bundlefilespos = {}
 
         self.firstnewrev = self.changelog.repotiprev + 1
         phases.retractboundary(self, None, phases.draft,


More information about the Mercurial-devel mailing list