Patchwork D1955: bundlespec: add support for some variants

login
register
mail settings
Submitter phabricator
Date March 30, 2018, 12:56 p.m.
Message ID <ef6fd128fddc6b87554605a55f734e1c@localhost.localdomain>
Download mbox | patch
Permalink /patch/29954/
State Not Applicable
Headers show

Comments

phabricator - March 30, 2018, 12:56 p.m.
lothiraldan updated this revision to Diff 7377.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D1955?vs=5027&id=7377

REVISION DETAIL
  https://phab.mercurial-scm.org/D1955

AFFECTED FILES
  mercurial/exchange.py
  tests/test-stream-bundle-v2.t

CHANGE DETAILS




To: lothiraldan, #hg-reviewers, indygreg
Cc: indygreg, mercurial-devel

Patch

diff --git a/tests/test-stream-bundle-v2.t b/tests/test-stream-bundle-v2.t
--- a/tests/test-stream-bundle-v2.t
+++ b/tests/test-stream-bundle-v2.t
@@ -41,15 +41,8 @@ 
   > EOF
 
   $ hg bundle -a --type="none-v2;stream=v2" bundle.hg
-  5 changesets found
   $ hg debugbundle bundle.hg
   Stream params: {}
-  changegroup -- {nbchanges: 5, version: 02}
-      426bada5c67598ca65036d57d9e4b64b0c1ce7a0
-      112478962961147124edd43549aedd1a335e44bf
-      26805aba1e600a82e93661149f2313866a221a7b
-      f585351a92f85104bff7c284233c338b10eb1df7
-      9bc730a19041f9ec7cb33c626e811aa233efb18c
-  cache:rev-branch-cache -- {}
+  stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Cstore}
   $ hg debugbundle --spec bundle.hg
-  none-v2
+  none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Cstore
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -76,6 +76,10 @@ 
 }
 _bundlespeccontentopts['bundle2'] = _bundlespeccontentopts['v2']
 
+_bundlespecvariants = {"streamv2": {"changegroup": False, "streamv2": True,
+                                    "tagsfnodescache": False,
+                                    "revbranchcache": False}}
+
 # Compression engines allowed in version 1. THIS SHOULD NEVER CHANGE.
 _bundlespecv1compengines = {'gzip', 'bzip2', 'none'}
 
@@ -206,6 +210,11 @@ 
     # Compute contentopts based on the version
     contentopts = _bundlespeccontentopts.get(version, {}).copy()
 
+    # Process the variants
+    if "stream" in params and params["stream"] == "v2":
+        variant = _bundlespecvariants["streamv2"]
+        contentopts.update(variant)
+
     if not externalnames:
         engine = util.compengines.forbundlename(compression)
         compression = engine.bundletype()[1]
@@ -281,6 +290,13 @@ 
                                         'a known bundlespec') % version,
                                       hint=_('try upgrading your Mercurial '
                                               'client'))
+            elif part.type == 'stream2' and version is None:
+                # A stream2 part requires to be part of a v2 bundle
+                version = "v2"
+                requirements = urlreq.unquote(part.params['requirements'])
+                splitted = requirements.split()
+                params = bundle2._formatrequirementsparams(splitted)
+                return 'none-v2;stream=v2;%s' % params
 
         if not version:
             raise error.Abort(_('could not identify changegroup version in '