# HG changeset patch # User Pierre-Yves David # Date 1652793953 -3600 # Node ID d587f09cad9890322bce4cad83f1c7e19db496b9 # Parent c12c843f0db72d5a2db8fda375831b30606bfec9 bundlespec: make the `stream` case less special The handling of the stream case seems fragile (does not account for newer parts and options that will arise) and has special code dedicated to it. To simplify and strengthen things, we make it use the same mechanism as the other options. So we make it less special by making it a special value in the common case. diff -r c12c843f0db7 -r d587f09cad98 mercurial/bundlecaches.py --- a/mercurial/bundlecaches.py Tue May 17 11:57:17 2022 +0100 +++ b/mercurial/bundlecaches.py Tue May 17 14:25:53 2022 +0100 @@ -56,6 +56,15 @@ b'tagsfnodescache': True, b'revbranchcache': True, }, + b'streamv2': { + b'changegroup': False, + b'cg.version': b'02', + b'obsolescence': False, + b'phases': False, + b"streamv2": True, + b'tagsfnodescache': False, + b'revbranchcache': False, + }, b'packed1': { b'cg.version': b's1', }, @@ -65,14 +74,7 @@ } _bundlespeccontentopts[b'bundle2'] = _bundlespeccontentopts[b'v2'] -_bundlespecvariants = { - b"streamv2": { - b"changegroup": False, - b"streamv2": True, - b"tagsfnodescache": False, - b"revbranchcache": False, - } -} +_bundlespecvariants = {b"streamv2": {}} # Compression engines allowed in version 1. THIS SHOULD NEVER CHANGE. _bundlespecv1compengines = {b'gzip', b'bzip2', b'none'} @@ -208,12 +210,21 @@ ) # 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 + # 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" contentopts = _bundlespeccontentopts.get(version, {}).copy() - - # Process the variants - if b"stream" in params and params[b"stream"] == b"v2": - variant = _bundlespecvariants[b"streamv2"] - contentopts.update(variant) + if version == b"streamv2": + # streamv2 have been reported as "v2" for a while. + version = b"v2" engine = util.compengines.forbundlename(compression) compression, wirecompression = engine.bundletype()