mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
merge with stable
This commit is contained in:
commit
b35d966e25
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user