Mercurial > hg-stable
changeset 31490:291951ad070b
merge with stable
author | Augie Fackler <augie@google.com> |
---|---|
date | Sat, 18 Mar 2017 12:27:52 -0400 |
parents | da7d19324b1e (current diff) 10c0ee338535 (diff) |
children | afb335353d28 |
files | mercurial/exchange.py |
diffstat | 2 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/exchange.py Sun Mar 05 22:22:32 2017 -0500 +++ b/mercurial/exchange.py Sat Mar 18 12:27:52 2017 -0400 @@ -44,6 +44,9 @@ 'bundle2': '02', #legacy } +# Compression engines allowed in version 1. THIS SHOULD NEVER CHANGE. +_bundlespecv1compengines = set(['gzip', 'bzip2', 'none']) + def parsebundlespec(repo, spec, strict=True, externalnames=False): """Parse a bundle string specification into parts. @@ -127,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' @@ -139,6 +146,12 @@ raise error.UnsupportedBundleSpecification( _('%s is not a recognized bundle specification') % spec) + # Bundle version 1 only supports a known set of compression engines. + if version == 'v1' and compression not in _bundlespecv1compengines: + raise error.UnsupportedBundleSpecification( + _('compression engine %s is not supported on v1 bundles') % + compression) + # The specification for packed1 can optionally declare the data formats # required to apply it. If we see this metadata, compare against what the # repo supports and error if the bundle isn't compatible.
--- a/tests/test-bundle-type.t Sun Mar 05 22:22:32 2017 -0500 +++ b/tests/test-bundle-type.t Sat Mar 18 12:27:52 2017 -0400 @@ -33,6 +33,23 @@ summary: a $ cd .. +Unknown compression type is rejected + + $ hg init t3 + $ cd t3 + $ hg -q pull ../b1 + $ hg bundle -a -t unknown out.hg + abort: unknown is not a recognized bundle specification + (see 'hg help bundle' for supported values for --type) + [255] + + $ hg bundle -a -t unknown-v2 out.hg + abort: unknown compression is not supported + (see 'hg help bundle' for supported values for --type) + [255] + + $ cd .. + test bundle types $ testbundle() { @@ -164,6 +181,21 @@ c35a0f9217e65d1fdb90c936ffa7dbe679f83ddf zstd-v2 + +Explicit request for zstd on non-generaldelta repos + + $ hg --config format.usegeneraldelta=false init nogd + $ hg -q -R nogd pull t1 + $ hg -R nogd bundle -a -t zstd nogd-zstd + 1 changesets found + +zstd-v1 always fails + + $ hg -R tzstd bundle -a -t zstd-v1 zstd-v1 + abort: compression engine zstd is not supported on v1 bundles + (see 'hg help bundle' for supported values for --type) + [255] + #else zstd is a valid engine but isn't available