joerg.sonnenberger created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
Advertising
REVISION SUMMARY
Always provide the human readable version of compression and version.
Add the translated wire format name in the new wirecompression and
wireversion fields.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3392
AFFECTED FILES
mercurial/commands.py
mercurial/exchange.py
CHANGE DETAILS
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -86,11 +86,13 @@
@attr.s
class bundlespec(object):
compression = attr.ib()
+ wirecompression = attr.ib()
version = attr.ib()
+ wireversion = attr.ib()
params = attr.ib()
contentopts = attr.ib()
-def parsebundlespec(repo, spec, strict=True, externalnames=False):
+def parsebundlespec(repo, spec, strict=True):
"""Parse a bundle string specification into parts.
Bundle specifications denote a well-defined bundle/exchange format.
@@ -110,9 +112,6 @@
If ``strict`` is True (the default) <compression> is required. Otherwise,
it is optional.
- If ``externalnames`` is False (the default), the human-centric names will
- be converted to their internal representation.
-
Returns a bundlespec object of (compression, version, parameters).
Compression will be ``None`` if not in strict mode and a compression isn't
defined.
@@ -215,12 +214,12 @@
variant = _bundlespecvariants["streamv2"]
contentopts.update(variant)
- if not externalnames:
- engine = util.compengines.forbundlename(compression)
- compression = engine.bundletype()[1]
- version = _bundlespeccgversions[version]
+ engine = util.compengines.forbundlename(compression)
+ compression, wirecompression = engine.bundletype()
+ wireversion = _bundlespeccgversions[version]
- return bundlespec(compression, version, params, contentopts)
+ return bundlespec(compression, wirecompression, version, wireversion,
+ params, contentopts)
def readbundle(ui, fh, fname, vfs=None):
header = changegroup.readexactly(fh, 4)
@@ -2241,8 +2240,7 @@
# component of the BUNDLESPEC.
if key == 'BUNDLESPEC':
try:
- bundlespec = parsebundlespec(repo, value,
- externalnames=True)
+ bundlespec = parsebundlespec(repo, value)
attrs['COMPRESSION'] = bundlespec.compression
attrs['VERSION'] = bundlespec.version
except error.InvalidBundleSpecification:
@@ -2256,11 +2254,12 @@
def isstreamclonespec(bundlespec):
# Stream clone v1
- if (bundlespec.compression == 'UN' and bundlespec.version == 's1'):
+ if (bundlespec.wirecompression == 'UN' and bundlespec.wireversion == 's1'):
return True
# Stream clone v2
- if (bundlespec.compression == 'UN' and bundlespec.version == '02' and \
+ if (bundlespec.wirecompression == 'UN' and \
+ bundlespec.wireversion == '02' and \
bundlespec.contentopts.get('streamv2')):
return True
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1243,14 +1243,12 @@
scmutil.nochangesfound(ui, repo, not base and outgoing.excluded)
return 1
- bcompression = bundlespec.compression
if cgversion == '01': #bundle1
- if bcompression is None:
- bcompression = 'UN'
- bversion = 'HG10' + bcompression
+ bversion = 'HG10' + bundlespec.wirecompression
bcompression = None
elif cgversion in ('02', '03'):
bversion = 'HG20'
+ bcompression = bundlespec.wirecompression
else:
raise error.ProgrammingError(
'bundle: unexpected changegroup version %s' % cgversion)
To: joerg.sonnenberger, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel