stream-clone: make sure the `stream` capability is set when bundling
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sun, 21 May 2023 01:03:19 +0200
changeset 50518 f2bcb56a1d39
parent 50517 cd2a2963b982
child 50519 3c0da0fa0eed
stream-clone: make sure the `stream` capability is set when bundling This is important to start narrowing protocol option in the next changesets.
mercurial/bundle2.py
mercurial/bundlecaches.py
--- a/mercurial/bundle2.py	Sun May 21 00:00:29 2023 +0200
+++ b/mercurial/bundle2.py	Sun May 21 01:03:19 2023 +0200
@@ -1730,6 +1730,8 @@
     caps = {}
     if opts.get(b'obsolescence', False):
         caps[b'obsmarkers'] = (b'V1',)
+    if opts.get(b'streamv2'):
+        caps[b'stream'] = [b'v2']
     bundle = bundle20(ui, caps)
     bundle.setcompression(compression, compopts)
     _addpartsfromopts(ui, repo, bundle, source, outgoing, opts)
--- a/mercurial/bundlecaches.py	Sun May 21 00:00:29 2023 +0200
+++ b/mercurial/bundlecaches.py	Sun May 21 01:03:19 2023 +0200
@@ -269,17 +269,15 @@
             )
 
     # Compute contentopts based on the version
-    if b"stream" in params and params[b"stream"] == b"v2":
-        # That case is fishy as this mostly derails the version selection
+    if b"stream" in params:
+        # This case is fishy as this mostly derails the version selection
         # mechanism. `stream` bundles are quite specific and used differently
         # as "normal" bundles.
         #
-        # So we are pinning this to "v2", as this will likely be
-        # compatible forever. (see the next conditional).
-        #
         # (we should probably define a cleaner way to do this and raise a
-        # warning when the old way is encounter)
-        version = b"streamv2"
+        # warning when the old way is encountered)
+        if params[b"stream"] == b"v2":
+            version = b"streamv2"
     contentopts = _bundlespeccontentopts.get(version, {}).copy()
     if version == b"streamv2":
         # streamv2 have been reported as "v2" for a while.