# HG changeset patch # User Gregory Szorc # Date 1533256403 25200 # Node ID d7ac49c2353ce1a0bab069181aad9429f57202cb # Parent 19344024a8e1cdba50461f19eec955efe25651d3 changegroup: pass version into constructor Currently, the version is an attribute on each class. Passing the argument into the constructor gets us one step closer to eliminating cg2packer and cg3packer. Differential Revision: https://phab.mercurial-scm.org/D4077 diff -r 19344024a8e1 -r d7ac49c2353c mercurial/changegroup.py --- a/mercurial/changegroup.py Thu Aug 02 17:29:53 2018 -0700 +++ b/mercurial/changegroup.py Thu Aug 02 17:33:23 2018 -0700 @@ -521,8 +521,8 @@ class cg1packer(object): deltaheader = _CHANGEGROUPV1_DELTA_HEADER - version = '01' - def __init__(self, repo, filematcher, bundlecaps=None): + + def __init__(self, repo, filematcher, version, bundlecaps=None): """Given a source repo, construct a bundler. filematcher is a matcher that matches on files to include in the @@ -536,6 +536,8 @@ assert filematcher self._filematcher = filematcher + self.version = version + # Set of capabilities we can use to build the bundle. if bundlecaps is None: bundlecaps = set() @@ -1100,11 +1102,10 @@ return struct.pack(self.deltaheader, node, p1n, p2n, linknode) class cg2packer(cg1packer): - version = '02' deltaheader = _CHANGEGROUPV2_DELTA_HEADER - def __init__(self, repo, filematcher, bundlecaps=None): - super(cg2packer, self).__init__(repo, filematcher, + def __init__(self, repo, filematcher, version, bundlecaps=None): + super(cg2packer, self).__init__(repo, filematcher, version, bundlecaps=bundlecaps) if self._reorder is None: @@ -1157,7 +1158,6 @@ return struct.pack(self.deltaheader, node, p1n, p2n, basenode, linknode) class cg3packer(cg2packer): - version = '03' deltaheader = _CHANGEGROUPV3_DELTA_HEADER def _packmanifests(self, dir, mfnodes, lookuplinknode): @@ -1177,13 +1177,13 @@ self.deltaheader, node, p1n, p2n, basenode, linknode, flags) def _makecg1packer(repo, filematcher, bundlecaps): - return cg1packer(repo, filematcher, bundlecaps=bundlecaps) + return cg1packer(repo, filematcher, b'01', bundlecaps=bundlecaps) def _makecg2packer(repo, filematcher, bundlecaps): - return cg2packer(repo, filematcher, bundlecaps=bundlecaps) + return cg2packer(repo, filematcher, b'02', bundlecaps=bundlecaps) def _makecg3packer(repo, filematcher, bundlecaps): - return cg3packer(repo, filematcher, bundlecaps=bundlecaps) + return cg3packer(repo, filematcher, b'03', bundlecaps=bundlecaps) _packermap = {'01': (_makecg1packer, cg1unpacker), # cg2 adds support for exchanging generaldelta