changeset 26756:9e272a96f764

exchange: support for streaming clone bundles Now that we have a mechanism to produce and consume streaming clone bundles, we need to teach the human-facing bundle specification parser and the internal bundle file header reading code to be aware of this new format. This patch does so. For the human-facing bundle specification, we choose the name "packed" to describe "streaming clone bundles" because the bundle is essentially a "pack" of raw revlog files that are "packed" together. There should probably be a bikeshed over the name, especially since it is human facing.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 15 Oct 2015 13:00:45 -0700
parents bb0b955d050d
children 43708f92f471
files mercurial/exchange.py
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/exchange.py	Sat Oct 17 11:14:52 2015 -0700
+++ b/mercurial/exchange.py	Thu Oct 15 13:00:45 2015 -0700
@@ -25,6 +25,7 @@
 # Maps bundle version human names to changegroup versions.
 _bundlespeccgversions = {'v1': '01',
                          'v2': '02',
+                         'packed1': 's1',
                          'bundle2': '02', #legacy
                         }
 
@@ -87,7 +88,10 @@
             if 'generaldelta' in repo.requirements:
                 version = 'v2'
         elif spec in _bundlespeccgversions:
-            compression = 'bzip2'
+            if spec == 'packed1':
+                compression = 'none'
+            else:
+                compression = 'bzip2'
             version = spec
         else:
             raise error.UnsupportedBundleSpecification(
@@ -121,6 +125,8 @@
         return changegroup.cg1unpacker(fh, alg)
     elif version.startswith('2'):
         return bundle2.getunbundler(ui, fh, magicstring=magic + version)
+    elif version == 'S1':
+        return streamclone.streamcloneapplier(fh)
     else:
         raise error.Abort(_('%s: unknown bundle version %s') % (fname, version))