D4089: changegroup: pass ellipsis roots into cgpacker constructor
This revision was automatically updated to reflect the committed changes. Closed by commit rHGad4c4cc9a5ac: changegroup: pass ellipsis roots into cgpacker constructor (authored by indygreg, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D4089?vs=9851=9965 REVISION DETAIL https://phab.mercurial-scm.org/D4089 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 @@ -522,7 +522,8 @@ class cgpacker(object): def __init__(self, repo, filematcher, version, allowreorder, useprevdelta, builddeltaheader, manifestsend, - sendtreemanifests, bundlecaps=None, shallow=False): + sendtreemanifests, bundlecaps=None, shallow=False, + ellipsisroots=None): """Given a source repo, construct a bundler. filematcher is a matcher that matches on files to include in the @@ -565,6 +566,9 @@ self._bundlecaps = bundlecaps self._isshallow = shallow +# Maps ellipsis revs to their roots at the changelog level. +self._precomputedellipsis = ellipsisroots + # experimental config: bundle.reorder reorder = repo.ui.config('bundle', 'reorder') if reorder == 'auto': @@ -740,7 +744,7 @@ # we skip some manifest nodes that we should otherwise # have sent. if (x in self._full_nodes -or cl.rev(x) in self._precomputed_ellipsis): +or cl.rev(x) in self._precomputedellipsis): n = c[0] # Record the first changeset introducing this manifest # version. @@ -1086,10 +1090,10 @@ # At this point, a node can either be one we should skip or an # ellipsis. If it's not an ellipsis, bail immediately. -if linkrev not in self._precomputed_ellipsis: +if linkrev not in self._precomputedellipsis: return -linkparents = self._precomputed_ellipsis[linkrev] +linkparents = self._precomputedellipsis[linkrev] def local(clrev): """Turn a changelog revnum into a local revnum. @@ -1133,8 +1137,8 @@ elif p in self._full_nodes: walk.extend([pp for pp in self._repo.changelog.parentrevs(p) if pp != nullrev]) -elif p in self._precomputed_ellipsis: -walk.extend([pp for pp in self._precomputed_ellipsis[p] +elif p in self._precomputedellipsis: +walk.extend([pp for pp in self._precomputedellipsis[p] if pp != nullrev]) else: # In this case, we've got an ellipsis with parents @@ -1188,7 +1192,8 @@ deltachunks=(diffheader, data), ) -def _makecg1packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg1packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.linknode) @@ -1199,9 +1204,11 @@ manifestsend=b'', sendtreemanifests=False, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) -def _makecg2packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg2packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.basenode, d.linknode) @@ -1215,9 +1222,11 @@ manifestsend=b'', sendtreemanifests=False, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) -def _makecg3packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg3packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags) @@ -1228,7 +1237,8 @@ manifestsend=closechunk(), sendtreemanifests=True, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) _packermap = {'01': (_makecg1packer, cg1unpacker), # cg2 adds support for exchanging generaldelta @@ -1289,7 +1299,7 @@ return min(versions) def getbundler(version, repo, bundlecaps=None,
D4089: changegroup: pass ellipsis roots into cgpacker constructor
indygreg created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY And rename the internal variable to conform with naming conventions. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D4089 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 @@ -525,7 +525,8 @@ class cgpacker(object): def __init__(self, repo, filematcher, version, allowreorder, useprevdelta, builddeltaheader, manifestsend, - sendtreemanifests, bundlecaps=None, shallow=False): + sendtreemanifests, bundlecaps=None, shallow=False, + ellipsisroots=None): """Given a source repo, construct a bundler. filematcher is a matcher that matches on files to include in the @@ -568,6 +569,9 @@ self._bundlecaps = bundlecaps self._isshallow = shallow +# Maps ellipsis revs to their roots at the changelog level. +self._precomputedellipsis = ellipsisroots + # experimental config: bundle.reorder reorder = repo.ui.config('bundle', 'reorder') if reorder == 'auto': @@ -743,7 +747,7 @@ # we skip some manifest nodes that we should otherwise # have sent. if (x in self._full_nodes -or cl.rev(x) in self._precomputed_ellipsis): +or cl.rev(x) in self._precomputedellipsis): n = c[0] # Record the first changeset introducing this manifest # version. @@ -1089,10 +1093,10 @@ # At this point, a node can either be one we should skip or an # ellipsis. If it's not an ellipsis, bail immediately. -if linkrev not in self._precomputed_ellipsis: +if linkrev not in self._precomputedellipsis: return -linkparents = self._precomputed_ellipsis[linkrev] +linkparents = self._precomputedellipsis[linkrev] def local(clrev): """Turn a changelog revnum into a local revnum. @@ -1136,8 +1140,8 @@ elif p in self._full_nodes: walk.extend([pp for pp in self._repo.changelog.parentrevs(p) if pp != nullrev]) -elif p in self._precomputed_ellipsis: -walk.extend([pp for pp in self._precomputed_ellipsis[p] +elif p in self._precomputedellipsis: +walk.extend([pp for pp in self._precomputedellipsis[p] if pp != nullrev]) else: # In this case, we've got an ellipsis with parents @@ -1191,7 +1195,8 @@ deltachunks=(diffheader, data), ) -def _makecg1packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg1packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.linknode) @@ -1202,9 +1207,11 @@ manifestsend=b'', sendtreemanifests=False, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) -def _makecg2packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg2packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.basenode, d.linknode) @@ -1218,9 +1225,11 @@ manifestsend=b'', sendtreemanifests=False, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) -def _makecg3packer(repo, filematcher, bundlecaps, shallow=False): +def _makecg3packer(repo, filematcher, bundlecaps, shallow=False, + ellipsisroots=None): builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags) @@ -1231,7 +1240,8 @@ manifestsend=closechunk(), sendtreemanifests=True, bundlecaps=bundlecaps, -shallow=shallow) +shallow=shallow, +ellipsisroots=ellipsisroots) _packermap = {'01': (_makecg1packer, cg1unpacker), # cg2 adds support for exchanging generaldelta @@ -1292,7 +1302,7 @@ return min(versions) def getbundler(version, repo, bundlecaps=None, filematcher=None, - shallow=False): + shallow=False,