[PATCH 9 of 9 "] discovery: explicitly use `undecided` for the children mapping

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Mar 5 12:39:20 EST 2019


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1551314950 -3600
#      Thu Feb 28 01:49:10 2019 +0100
# Node ID dc1719ac0f255e6b243d06b94007664908c3976e
# Parent  6127533daac7b331ba980d70040d55ee938ce106
# EXP-Topic discovery-speedup
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r dc1719ac0f25
discovery: explicitly use `undecided` for the children mapping

Recent performance achievements makes the assumption that the `undecided` set
is used for sampling. That assumption is always true in practice. We stop
pretending that taking anything else would make sense and we directly use the
`undecided` set from the object. This provides a more honest API.

diff --git a/mercurial/setdiscovery.py b/mercurial/setdiscovery.py
--- a/mercurial/setdiscovery.py
+++ b/mercurial/setdiscovery.py
@@ -172,7 +172,7 @@ class partialdiscovery(object):
             return getrev(r)[5:6]
         return getparents
 
-    def _childrengetter(self, revs):
+    def _childrengetter(self):
 
         if self._childrenmap is not None:
             return self._childrenmap.__getitem__
@@ -184,6 +184,7 @@ class partialdiscovery(object):
         self._childrenmap = children = {}
 
         parentrevs = self._parentsgetter()
+        revs = self.undecided
 
         for rev in sorted(revs):
             # Always ensure revision has an entry so we don't need to worry
@@ -232,7 +233,7 @@ class partialdiscovery(object):
         # update from roots
         revsroots = set(repo.revs('roots(%ld)', revs))
 
-        childrenrevs = self._childrengetter(revs)
+        childrenrevs = self._childrengetter()
 
         _updatesample(revs, revsroots, sample, childrenrevs)
         assert sample


More information about the Mercurial-devel mailing list