D4080: changegroup: pass end of manifests marker into constructor
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Fri Aug 3 21:05:02 UTC 2018
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
cg3 inserts a custom marker in the stream once all manifests
have been transferred. This is currently abstracted out by
overriding a method.
Let's pass the end of manifests marker in as an argument to avoid
the extra method.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4080
AFFECTED FILES
mercurial/changegroup.py
CHANGE DETAILS
diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -524,6 +524,7 @@
class cg1packer(object):
def __init__(self, repo, filematcher, version, builddeltaheader,
+ manifestsend,
bundlecaps=None):
"""Given a source repo, construct a bundler.
@@ -533,6 +534,8 @@
builddeltaheader is a callable that constructs the header for a group
delta.
+ manifestsend is a chunk to send after manifests have been fully emitted.
+
bundlecaps is optional and can be used to specify the set of
capabilities which can be used to build the bundle. While bundlecaps is
unused in core Mercurial, extensions rely on this feature to communicate
@@ -543,6 +546,7 @@
self.version = version
self._builddeltaheader = builddeltaheader
+ self._manifestsend = manifestsend
# Set of capabilities we can use to build the bundle.
if bundlecaps is None:
@@ -664,9 +668,6 @@
lookuplinknode, units=_('manifests')):
yield chunk
- def _manifestsdone(self):
- return ''
-
def generate(self, commonrevs, clnodes, fastpathlinkrev, source):
'''yield a sequence of changegroup chunks (strings)'''
repo = self._repo
@@ -857,7 +858,7 @@
size += len(x)
yield x
self._verbosenote(_('%8.i (manifests)\n') % size)
- yield self._manifestsdone()
+ yield self._manifestsend
# The 'source' parameter is useful for extensions
def generatefiles(self, changedfiles, linknodes, commonrevs, source):
@@ -1102,9 +1103,9 @@
class cg2packer(cg1packer):
def __init__(self, repo, filematcher, version, builddeltaheader,
- bundlecaps=None):
+ manifestsend, bundlecaps=None):
super(cg2packer, self).__init__(repo, filematcher, version,
- builddeltaheader,
+ builddeltaheader, manifestsend,
bundlecaps=bundlecaps)
if self._reorder is None:
@@ -1162,28 +1163,28 @@
units=_('manifests')):
yield chunk
- def _manifestsdone(self):
- return self.close()
-
def _makecg1packer(repo, filematcher, bundlecaps):
builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack(
d.node, d.p1node, d.p2node, d.linknode)
return cg1packer(repo, filematcher, b'01', builddeltaheader,
+ manifestsend=b'',
bundlecaps=bundlecaps)
def _makecg2packer(repo, filematcher, bundlecaps):
builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack(
d.node, d.p1node, d.p2node, d.basenode, d.linknode)
return cg2packer(repo, filematcher, b'02', builddeltaheader,
+ manifestsend=b'',
bundlecaps=bundlecaps)
def _makecg3packer(repo, filematcher, bundlecaps):
builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack(
d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags)
return cg3packer(repo, filematcher, b'03', builddeltaheader,
+ manifestsend=closechunk(),
bundlecaps=bundlecaps)
_packermap = {'01': (_makecg1packer, cg1unpacker),
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list