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