diff -r d9b3cc3d5d07 -r db5501d93bcf mercurial/changegroup.py --- a/mercurial/changegroup.py Thu Sep 20 19:31:07 2018 -0700 +++ b/mercurial/changegroup.py Mon Sep 24 09:41:42 2018 -0700 @@ -36,7 +36,6 @@ from .utils import ( interfaceutil, - stringutil, ) _CHANGEGROUPV1_DELTA_HEADER = struct.Struct("20s20s20s20s") @@ -537,11 +536,11 @@ yield prefix yield data -def _sortnodesnormal(store, nodes, reorder): +def _sortnodesnormal(store, nodes): """Sort nodes for changegroup generation and turn into revnums.""" # for generaldelta revlogs, we linearize the revs; this will both be # much quicker and generate a much smaller bundle - if (store._generaldelta and reorder is None) or reorder: + if store._generaldelta: revs = set(store.rev(n) for n in nodes) return dagop.linearize(revs, store.parentrevs) else: @@ -656,7 +655,6 @@ ) def deltagroup(repo, store, nodes, ischangelog, lookup, forcedeltaparentprev, - allowreorder, topic=None, ellipses=False, clrevtolocalrev=None, fullclnodes=None, precomputedellipsis=None): @@ -691,7 +689,7 @@ elif ellipses: revs = _sortnodesellipsis(store, nodes, cl, lookup) else: - revs = _sortnodesnormal(store, nodes, allowreorder) + revs = _sortnodesnormal(store, nodes) # In the first pass, collect info about the deltas we'll be # generating. @@ -756,7 +754,7 @@ progress.complete() class cgpacker(object): - def __init__(self, repo, filematcher, version, allowreorder, + def __init__(self, repo, filematcher, version, builddeltaheader, manifestsend, forcedeltaparentprev=False, bundlecaps=None, ellipses=False, @@ -766,10 +764,6 @@ filematcher is a matcher that matches on files to include in the changegroup. Used to facilitate sparse changegroups. - allowreorder controls whether reordering of revisions is allowed. - This value is used when ``bundle.reorder`` is ``auto`` or isn't - set. - forcedeltaparentprev indicates whether delta parents must be against the previous revision in a delta group. This should only be used for compatibility with changegroup version 1. @@ -813,13 +807,6 @@ # 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': - self._reorder = allowreorder - else: - self._reorder = stringutil.parsebool(reorder) - self._repo = repo if self._repo.ui.verbose and not self._repo.ui.debugflag: @@ -862,17 +849,16 @@ # The fastpath is usually safer than the slowpath, because the filelogs # are walked in revlog order. # - # When taking the slowpath with reorder=None and the manifest revlog - # uses generaldelta, the manifest may be walked in the "wrong" order. - # Without 'clrevorder', we would get an incorrect linkrev (see fix in - # cc0ff93d0c0c). + # When taking the slowpath when the manifest revlog uses generaldelta, + # the manifest may be walked in the "wrong" order. Without 'clrevorder', + # we would get an incorrect linkrev (see fix in cc0ff93d0c0c). # # When taking the fastpath, we are only vulnerable to reordering - # of the changelog itself. The changelog never uses generaldelta, so - # it is only reordered when reorder=True. To handle this case, we - # simply take the slowpath, which already has the 'clrevorder' logic. - # This was also fixed in cc0ff93d0c0c. - fastpathlinkrev = fastpathlinkrev and not self._reorder + # of the changelog itself. The changelog never uses generaldelta and is + # never reordered. To handle this case, we simply take the slowpath, + # which already has the 'clrevorder' logic. This was also fixed in + # cc0ff93d0c0c. + # Treemanifests don't work correctly with fastpathlinkrev # either, because we don't discover which directory nodes to # send along with files. This could probably be fixed. @@ -1003,8 +989,6 @@ gen = deltagroup( self._repo, cl, nodes, True, lookupcl, self._forcedeltaparentprev, - # Reorder settings are currently ignored for changelog. - True, ellipses=self._ellipses, topic=_('changesets'), clrevtolocalrev={}, @@ -1087,7 +1071,7 @@ deltas = deltagroup( self._repo, store, prunednodes, False, lookupfn, - self._forcedeltaparentprev, self._reorder, + self._forcedeltaparentprev, ellipses=self._ellipses, topic=_('manifests'), clrevtolocalrev=clrevtolocalrev, @@ -1184,7 +1168,7 @@ deltas = deltagroup( self._repo, filerevlog, filenodes, False, lookupfilelog, - self._forcedeltaparentprev, self._reorder, + self._forcedeltaparentprev, ellipses=self._ellipses, clrevtolocalrev=clrevtolocalrev, fullclnodes=self._fullclnodes, @@ -1200,7 +1184,6 @@ d.node, d.p1node, d.p2node, d.linknode) return cgpacker(repo, filematcher, b'01', - allowreorder=None, builddeltaheader=builddeltaheader, manifestsend=b'', forcedeltaparentprev=True, @@ -1215,11 +1198,7 @@ builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack( d.node, d.p1node, d.p2node, d.basenode, d.linknode) - # Since generaldelta is directly supported by cg2, reordering - # generally doesn't help, so we disable it by default (treating - # bundle.reorder=auto just like bundle.reorder=False). return cgpacker(repo, filematcher, b'02', - allowreorder=False, builddeltaheader=builddeltaheader, manifestsend=b'', bundlecaps=bundlecaps, @@ -1234,7 +1213,6 @@ d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags) return cgpacker(repo, filematcher, b'03', - allowreorder=False, builddeltaheader=builddeltaheader, manifestsend=closechunk(), bundlecaps=bundlecaps,