[PATCH 5 of 5] bundle2: support for unbundling simple parameter
pierre-yves.david at ens-lyon.org
pierre-yves.david at ens-lyon.org
Wed Mar 19 17:02:06 CDT 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1395183384 25200
# Tue Mar 18 15:56:24 2014 -0700
# Node ID 00cd3bb9a19a6e1dbb333f501fd93231eae6de80
# Parent e98462ffb743dec94550942c5d81e943f161a90e
bundle2: support for unbundling simple parameter
the unbundler now understand simple list of parameter.
diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -133,13 +133,16 @@ class unbundler(object):
return changegroup.readexactly(self._fp, n)
@util.propertycache
def params(self):
"""dictionnary of stream level parameters"""
- paramsize = self._readexact(2)
- assert paramsize == '\0\0'
- return {}
+ params = {}
+ paramssize = _unpack(_fstreamparamsize, self._readexact(2))[0]
+ if paramssize:
+ for p in self._readexact(paramssize).split(' '):
+ params[p] = None
+ return params
def __iter__(self):
"""yield all parts contained in the stream"""
# make sure param have been loaded
self.params
diff --git a/tests/test-bundle2.t b/tests/test-bundle2.t
--- a/tests/test-bundle2.t
+++ b/tests/test-bundle2.t
@@ -28,10 +28,12 @@ Create an extension to test bundle2 API
> @command('unbundle2', [], '')
> def cmdunbundle2(ui, repo):
> """read a bundle2 container from standard input"""
> unbundler = bundle2.unbundler(sys.stdin)
> ui.write('options count: %i\n' % len(unbundler.params))
+ > for key in sorted(unbundler.params):
+ > print '-', key
> parts = list(unbundler)
> ui.write('parts count: %i\n' % len(parts))
> EOF
$ cat >> $HGRCPATH << EOF
> [extensions]
@@ -81,14 +83,30 @@ Test parameters
advisory parameters, no value
-------------------------------
Simplest possible parameters form
-Test generation
+Test generation simple option
$ hg bundle2 --param 'caution'
HG20\x00\x07caution\x00\x00 (no-eol) (esc)
+Test unbundling
+
+ $ hg bundle2 --param 'caution' | hg unbundle2
+ options count: 1
+ - caution
+ parts count: 0
+
Test generation multiple option
$ hg bundle2 --param 'caution' --param 'meal'
HG20\x00\x0ccaution meal\x00\x00 (no-eol) (esc)
+
+Test unbundling
+
+ $ hg bundle2 --param 'caution' --param 'meal' | hg unbundle2
+ options count: 2
+ - caution
+ - meal
+ parts count: 0
+
More information about the Mercurial-devel
mailing list