# HG changeset patch # User Gregory Szorc # Date 1489692795 25200 # Node ID 10c0ee33853539bd2721a05d4753785c2494d243 # Parent ffed3bf5cd4cbb1649990d84cb4468b2b8175e07 exchange: use v2 bundles for modern compression engines (issue5506) Previously, `hg bundle zstd` on a non-generaldelta repo would attempt to use a v1 bundle. This would fail because zstd is not supported on v1 bundles. This patch changes the behavior to automatically use a v2 bundle when the user explicitly requests a bundlespec that is a compression engine not supported on v1. If the bundlespec is -v1, it is still explicitly rejected because that request cannot be fulfilled. diff -r ffed3bf5cd4c -r 10c0ee338535 mercurial/exchange.py --- a/mercurial/exchange.py Thu Mar 16 12:23:56 2017 -0700 +++ b/mercurial/exchange.py Thu Mar 16 12:33:15 2017 -0700 @@ -130,8 +130,12 @@ if spec in util.compengines.supportedbundlenames: compression = spec version = 'v1' + # Generaldelta repos require v2. if 'generaldelta' in repo.requirements: version = 'v2' + # Modern compression engines require v2. + if compression not in _bundlespecv1compengines: + version = 'v2' elif spec in _bundlespeccgversions: if spec == 'packed1': compression = 'none' diff -r ffed3bf5cd4c -r 10c0ee338535 tests/test-bundle-type.t --- a/tests/test-bundle-type.t Thu Mar 16 12:23:56 2017 -0700 +++ b/tests/test-bundle-type.t Thu Mar 16 12:33:15 2017 -0700 @@ -187,9 +187,7 @@ $ hg --config format.usegeneraldelta=false init nogd $ hg -q -R nogd pull t1 $ hg -R nogd bundle -a -t zstd nogd-zstd - abort: compression engine zstd is not supported on v1 bundles - (see 'hg help bundle' for supported values for --type) - [255] + 1 changesets found zstd-v1 always fails