Mercurial > hg
changeset 31474: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 2915cc1d3429 |
files | mercurial/exchange.py tests/test-bundle-type.t |
diffstat | 2 files changed, 5 insertions(+), 3 deletions(-) [+] |
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'
--- 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