cg2packer: set reorder=False in __init__ instead of in group()
The difference between reorder=None (bundle.reorder=auto) and
reorder=False is that the generaldelta revlogs get reordered with the
former. In cg2packer, group() we check if the revlog uses generaldelta
and if reorder=None and then convert that to reorder=False. We are
effectively saying that whether or not generaldelta is used, we want
reorder=None to mean reorder=False for changegroup 2. To make this
clearer, check if reorder=None in the constructor and change it to
False there and drop the overriding of group(). Also document the
reason for turning reordering off.
--- a/mercurial/changegroup.py Thu Apr 23 09:44:22 2015 -0700
+++ b/mercurial/changegroup.py Wed Apr 29 10:38:45 2015 -0700
@@ -510,11 +510,13 @@
version = '02'
deltaheader = _CHANGEGROUPV2_DELTA_HEADER
- def group(self, nodelist, revlog, lookup, units=None, reorder=None):
- if (revlog._generaldelta and reorder is None):
- reorder = False
- return super(cg2packer, self).group(nodelist, revlog, lookup,
- units=units, reorder=reorder)
+ def __init__(self, repo, bundlecaps=None):
+ super(cg2packer, self).__init__(repo, bundlecaps)
+ if self._reorder is None:
+ # 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).
+ self._reorder = False
def deltaparent(self, revlog, rev, p1, p2, prev):
dp = revlog.deltaparent(rev)