D4082: changegroup: control reordering via constructor argument

2018-08-06 Thread indygreg (Gregory Szorc)
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG6e999a2d8fe7: changegroup: control reordering via 
constructor argument (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D4082?vs=9844=9959

REVISION DETAIL
  https://phab.mercurial-scm.org/D4082

AFFECTED FILES
  mercurial/changegroup.py

CHANGE DETAILS

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -520,14 +520,18 @@
 deltachunks = attr.ib()
 
 class cg1packer(object):
-def __init__(self, repo, filematcher, version, builddeltaheader,
- manifestsend, sendtreemanifests,
+def __init__(self, repo, filematcher, version, allowreorder,
+ builddeltaheader, manifestsend, sendtreemanifests,
  bundlecaps=None):
 """Given a source repo, construct a bundler.
 
 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.
+
 builddeltaheader is a callable that constructs the header for a group
 delta.
 
@@ -552,14 +556,16 @@
 if bundlecaps is None:
 bundlecaps = set()
 self._bundlecaps = bundlecaps
+
 # experimental config: bundle.reorder
 reorder = repo.ui.config('bundle', 'reorder')
 if reorder == 'auto':
-reorder = None
+self._reorder = allowreorder
 else:
-reorder = stringutil.parsebool(reorder)
+self._reorder = stringutil.parsebool(reorder)
+
 self._repo = repo
-self._reorder = reorder
+
 if self._repo.ui.verbose and not self._repo.ui.debugflag:
 self._verbosenote = self._repo.ui.note
 else:
@@ -1120,19 +1126,6 @@
 )
 
 class cg2packer(cg1packer):
-def __init__(self, repo, filematcher, version, builddeltaheader,
- manifestsend, sendtreemanifests, bundlecaps=None):
-super(cg2packer, self).__init__(repo, filematcher, version,
-builddeltaheader, manifestsend,
-sendtreemanifests,
-bundlecaps=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, store, rev, p1, p2, prev):
 # Narrow ellipses mode.
 if util.safehasattr(self, 'full_nodes'):
@@ -1176,23 +1169,29 @@
 builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.linknode)
 
-return cg1packer(repo, filematcher, b'01', builddeltaheader,
+return cg1packer(repo, filematcher, b'01', allowreorder=None,
+ builddeltaheader=builddeltaheader,
  manifestsend=b'', sendtreemanifests=False,
  bundlecaps=bundlecaps)
 
 def _makecg2packer(repo, filematcher, bundlecaps):
 builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.basenode, d.linknode)
 
-return cg2packer(repo, filematcher, b'02', builddeltaheader,
+# 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 cg2packer(repo, filematcher, b'02', allowreorder=False,
+ builddeltaheader=builddeltaheader,
  manifestsend=b'', sendtreemanifests=False,
  bundlecaps=bundlecaps)
 
 def _makecg3packer(repo, filematcher, bundlecaps):
 builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags)
 
-return cg2packer(repo, filematcher, b'03', builddeltaheader,
+return cg2packer(repo, filematcher, b'03', allowreorder=False,
+ builddeltaheader=builddeltaheader,
  manifestsend=closechunk(), sendtreemanifests=True,
  bundlecaps=bundlecaps)
 



To: indygreg, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D4082: changegroup: control reordering via constructor argument

2018-08-03 Thread indygreg (Gregory Szorc)
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  cg2packer.__init__ exists just to override self._reorder. Let's
  parameterize this behavior via an argument to the parent's
  __init__.
  
  The logic for self._reorder is kinda wonky. None is used as a
  special value and the value should be None in some situations.
  It is probably worth rewriting this logic to make behavior more
  explicit. This will likely happen as part of future work to
  control the delta generation process that I have planned.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D4082

AFFECTED FILES
  mercurial/changegroup.py

CHANGE DETAILS

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -523,14 +523,18 @@
 deltachunks = attr.ib()
 
 class cg1packer(object):
-def __init__(self, repo, filematcher, version, builddeltaheader,
- manifestsend, sendtreemanifests,
+def __init__(self, repo, filematcher, version, allowreorder,
+ builddeltaheader, manifestsend, sendtreemanifests,
  bundlecaps=None):
 """Given a source repo, construct a bundler.
 
 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.
+
 builddeltaheader is a callable that constructs the header for a group
 delta.
 
@@ -555,14 +559,16 @@
 if bundlecaps is None:
 bundlecaps = set()
 self._bundlecaps = bundlecaps
+
 # experimental config: bundle.reorder
 reorder = repo.ui.config('bundle', 'reorder')
 if reorder == 'auto':
-reorder = None
+self._reorder = allowreorder
 else:
-reorder = stringutil.parsebool(reorder)
+self._reorder = stringutil.parsebool(reorder)
+
 self._repo = repo
-self._reorder = reorder
+
 if self._repo.ui.verbose and not self._repo.ui.debugflag:
 self._verbosenote = self._repo.ui.note
 else:
@@ -1123,19 +1129,6 @@
 )
 
 class cg2packer(cg1packer):
-def __init__(self, repo, filematcher, version, builddeltaheader,
- manifestsend, sendtreemanifests, bundlecaps=None):
-super(cg2packer, self).__init__(repo, filematcher, version,
-builddeltaheader, manifestsend,
-sendtreemanifests,
-bundlecaps=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, store, rev, p1, p2, prev):
 # Narrow ellipses mode.
 if util.safehasattr(self, 'full_nodes'):
@@ -1179,23 +1172,29 @@
 builddeltaheader = lambda d: _CHANGEGROUPV1_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.linknode)
 
-return cg1packer(repo, filematcher, b'01', builddeltaheader,
+return cg1packer(repo, filematcher, b'01', allowreorder=None,
+ builddeltaheader=builddeltaheader,
  manifestsend=b'', sendtreemanifests=False,
  bundlecaps=bundlecaps)
 
 def _makecg2packer(repo, filematcher, bundlecaps):
 builddeltaheader = lambda d: _CHANGEGROUPV2_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.basenode, d.linknode)
 
-return cg2packer(repo, filematcher, b'02', builddeltaheader,
+# 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 cg2packer(repo, filematcher, b'02', allowreorder=False,
+ builddeltaheader=builddeltaheader,
  manifestsend=b'', sendtreemanifests=False,
  bundlecaps=bundlecaps)
 
 def _makecg3packer(repo, filematcher, bundlecaps):
 builddeltaheader = lambda d: _CHANGEGROUPV3_DELTA_HEADER.pack(
 d.node, d.p1node, d.p2node, d.basenode, d.linknode, d.flags)
 
-return cg2packer(repo, filematcher, b'03', builddeltaheader,
+return cg2packer(repo, filematcher, b'03', allowreorder=False,
+ builddeltaheader=builddeltaheader,
  manifestsend=closechunk(), sendtreemanifests=True,
  bundlecaps=bundlecaps)
 



To: indygreg, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing