--- a/mercurial/exchange.py Tue Mar 07 13:24:24 2017 -0500
+++ b/mercurial/exchange.py Thu Mar 16 12:23:56 2017 -0700
@@ -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.
@@ -139,6 +142,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.