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

login
register
mail settings
Submitter Martin von Zweigbergk
Date May 2, 2015, 4:45 a.m.
Message ID <43d0a6aab2e0e2b9be3a.1430541928@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/8845/
State Accepted
Commit 5447b8523fef2afc9c7275aab5b69e2751c0944b
Headers show

Comments

Martin von Zweigbergk - May 2, 2015, 4:45 a.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@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.

Patch

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)