D4187: changegroup: move part of _revisiondeltanarrow into group()

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Aug 9 18:51:55 UTC 2018


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Now all the logic for determining which delta generation code
  is called lives in a single function.

REPOSITORY
  rHG Mercurial

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

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
@@ -710,8 +710,19 @@
             linknode = lookup(store.node(curr))
 
             if self._ellipses:
-                delta = self._revisiondeltanarrow(store, ischangelog,
-                                                  curr, prev, linknode)
+                linkrev = self._clnodetorev[linknode]
+                self._clrevtolocalrev[linkrev] = curr
+
+                # This is a node to send in full, because the changeset it
+                # corresponds to was a full changeset.
+                if linknode in self._fullnodes:
+                    delta = _revisiondeltanormal(store, curr, prev, linknode,
+                                                 self._deltaparentfn)
+                elif linkrev not in self._precomputedellipsis:
+                    delta = None
+                else:
+                    delta = self._revisiondeltanarrow(store, ischangelog,
+                                                      curr, linkrev, linknode)
             else:
                 delta = _revisiondeltanormal(store, curr, prev, linknode,
                                              self._deltaparentfn)
@@ -1046,21 +1057,7 @@
                 self._verbosenote(_('%8.i  %s\n') % (size, fname))
         progress.complete()
 
-    def _revisiondeltanarrow(self, store, ischangelog, rev, prev, linknode):
-        linkrev = self._clnodetorev[linknode]
-        self._clrevtolocalrev[linkrev] = rev
-
-        # This is a node to send in full, because the changeset it
-        # corresponds to was a full changeset.
-        if linknode in self._fullnodes:
-            return _revisiondeltanormal(store, rev, prev, linknode,
-                                        self._deltaparentfn)
-
-        # At this point, a node can either be one we should skip or an
-        # ellipsis. If it's not an ellipsis, bail immediately.
-        if linkrev not in self._precomputedellipsis:
-            return
-
+    def _revisiondeltanarrow(self, store, ischangelog, rev, linkrev, linknode):
         linkparents = self._precomputedellipsis[linkrev]
         def local(clrev):
             """Turn a changelog revnum into a local revnum.



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list