D6004: changegroup: moving non-pruning pf non-ellipsis manifests to _prunemanifests()

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Fri Feb 22 05:31:40 UTC 2019


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

REVISION SUMMARY
  Google has an extension that overrides _prunemanifests() and removes
  nodes that we fetch using another mechanism. That broke when
  _prunemanifests() no longer got called. It works again if we move the
  check for "not self._ellipses" inside _prunemanifests().

REPOSITORY
  rHG Mercurial

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

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
@@ -1073,11 +1073,6 @@
                 # because of narrow clones). Do this even for the root
                 # directory (tree=='')
                 prunednodes = []
-            elif not self._ellipses:
-                # In non-ellipses case and large repositories, it is better to
-                # prevent calling of store.rev and store.linkrev on a lot of
-                # nodes as compared to sending some extra data
-                prunednodes = nodes.copy()
             else:
                 # Avoid sending any manifest nodes we can prove the
                 # client already has by checking linkrevs. See the
@@ -1110,6 +1105,11 @@
                     yield tree, []
 
     def _prunemanifests(self, store, nodes, commonrevs):
+        if not self._ellipses:
+            # In non-ellipses case and large repositories, it is better to
+            # prevent calling of store.rev and store.linkrev on a lot of
+            # nodes as compared to sending some extra data
+            return nodes.copy()
         # This is split out as a separate method to allow filtering
         # commonrevs in extension code.
         #



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


More information about the Mercurial-devel mailing list