[PATCH 2 of 3] cg2packer: set reorder=False in __init__ instead of in group()

Martin von Zweigbergk martinvonz at google.com
Fri May 1 23:45:28 CDT 2015

# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1430329125 25200
#      Wed Apr 29 10:38:45 2015 -0700
# Node ID 43d0a6aab2e0e2b9be3a603237ab52d3dc3455c4
# Parent  b41d78c05dfa968c14ebff48ce9af5527190ead1
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.

diff -r b41d78c05dfa -r 43d0a6aab2e0 mercurial/changegroup.py
--- 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)

More information about the Mercurial-devel mailing list