mercurial/exchange.py
branchstable
changeset 31473 ffed3bf5cd4c
parent 30913 d70971a3ae80
child 31474 10c0ee338535
--- 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.