diff mercurial/exchange.py @ 30890:10c0ee338535 stable

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 <engine>-v1, it is still explicitly rejected because that request cannot be fulfilled.
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 16 Mar 2017 12:33:15 -0700
parents ffed3bf5cd4c
children 291951ad070b
line wrap: on
line diff
--- 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'