merge with stable

This commit is contained in:
Augie Fackler 2017-03-18 12:27:52 -04:00
commit b35d966e25
2 changed files with 45 additions and 0 deletions

View File

@ -44,6 +44,9 @@ _bundlespeccgversions = {'v1': '01',
'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 @@ def parsebundlespec(repo, spec, strict=True, externalnames=False):
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 @@ def parsebundlespec(repo, spec, strict=True, externalnames=False):
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.

View File

@ -33,6 +33,23 @@ bundle w/o type option
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 @@ Compression level can be adjusted for bundle2 bundles
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