diff -r 86cd1f2cfff5 -r ffed3bf5cd4c mercurial/exchange.py --- 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.