cg2packer: set reorder=False in __init__ instead of in group()
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 29 Apr 2015 10:38:45 -0700
changeset 24911 5447b8523fef
parent 24910 80a711e91507
child 24912 e285b98c65cc
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.
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)