Mercurial > hg-stable
diff mercurial/setdiscovery.py @ 23808: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 |
line wrap: on
line diff
--- a/mercurial/setdiscovery.py Wed Jan 07 09:30:06 2015 -0800 +++ b/mercurial/setdiscovery.py Tue Jan 06 16:40:33 2015 -0800 @@ -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'))