Mercurial > hg > mercurial-source
changeset 23820:07d0f59e0ba7
setdiscovery: avoid calling any sample building if the undecided set is small
If the length of undecided is smaller than the sample size, we can just request
information for all of them.
This conditional was previously handled by '_setupsample'. But '_setupsample' is
in my opinion a problematic function with blurry semantics. Having this
conditional explicitly earlier makes the code more explicit and moves us closer
to removing this '_setupsample' function.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 06 Jan 2015 16:40:33 -0800 |
parents | e97e363a7000 |
children | 9ca2eb881b53 |
files | mercurial/setdiscovery.py |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/setdiscovery.py +++ b/mercurial/setdiscovery.py @@ -74,8 +74,6 @@ visit.append(p) def _setupsample(dag, nodes, size): - if len(nodes) <= size: - return set(nodes), None, 0 always = dag.headsetofconnecteds(nodes) desiredlen = size - len(always) if desiredlen <= 0: @@ -205,8 +203,11 @@ ui.debug("taking quick initial sample\n") samplefunc = _takequicksample targetsize = initialsamplesize - sample = samplefunc(dag, undecided, targetsize) - sample = _limitsample(sample, targetsize) + if len(undecided) < targetsize: + sample = list(undecided) + else: + sample = samplefunc(dag, undecided, targetsize) + sample = _limitsample(sample, targetsize) roundtrips += 1 ui.progress(_('searching'), roundtrips, unit=_('queries'))