From patchwork Mon Aug 6 06:57:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D4080: changegroup: pass end of manifests marker into constructor From: phabricator X-Patchwork-Id: 33300 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Mon, 6 Aug 2018 06:57:13 +0000 This revision was automatically updated to reflect the committed changes. Closed by commit rHG67f37e8a5490: changegroup: pass end of manifests marker into constructor (authored by indygreg, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D4080?vs=9842&id=9957 REVISION DETAIL https://phab.mercurial-scm.org/D4080 AFFECTED FILES mercurial/changegroup.py CHANGE DETAILS To: indygreg, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -521,6 +521,7 @@ class cg1packer(object): def __init__(self, repo, filematcher, version, builddeltaheader, + manifestsend, bundlecaps=None): """Given a source repo, construct a bundler. @@ -530,6 +531,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 @@ -540,6 +543,7 @@ self.version = version self._builddeltaheader = builddeltaheader + self._manifestsend = manifestsend # Set of capabilities we can use to build the bundle. if bundlecaps is None: @@ -661,9 +665,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 @@ -854,7 +855,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): @@ -1099,9 +1100,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: @@ -1159,28 +1160,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),