# HG changeset patch # User Pierre-Yves David # Date 2019-02-28 00:49:10 # Node ID a05f0bbefdd961409bf77120a0f71d4ad8332785 # Parent 5baf06d2bb41bf81ddd99c5b958aa220d5ea7124 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