[PATCH 02 of 10 V2] discovery: move handling of sampling special case inside sampling function

Boris Feld boris.feld at octobus.net
Fri Jan 4 12:29:23 EST 2019


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1544785275 -3600
#      Fri Dec 14 12:01:15 2018 +0100
# Node ID 87b2949d84a0abf6b01d7266093c68f67849f113
# Parent  01a79b3269d4bfe49306b021de35637f7016fa45
# EXP-Topic discovery-refactor
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 87b2949d84a0
discovery: move handling of sampling special case inside sampling function

The handling of cases where the number of revisions to sample is smaller than
the sample size can be moved with the sample function themselves. This
simplifies main logic, preparing a coming refactoring.

diff --git a/mercurial/setdiscovery.py b/mercurial/setdiscovery.py
--- a/mercurial/setdiscovery.py
+++ b/mercurial/setdiscovery.py
@@ -102,6 +102,8 @@ def _takequicksample(repo, headrevs, rev
     :headrevs: set of head revisions in local DAG to consider
     :revs: set of revs to discover
     :size: the maximum size of the sample"""
+    if len(revs) <= size:
+        return list(revs)
     sample = set(repo.revs('heads(%ld)', revs))
 
     if len(sample) >= size:
@@ -112,6 +114,8 @@ def _takequicksample(repo, headrevs, rev
     return sample
 
 def _takefullsample(repo, headrevs, revs, size):
+    if len(revs) <= size:
+        return list(revs)
     sample = set(repo.revs('heads(%ld)', revs))
 
     # update from heads
@@ -264,10 +268,7 @@ def findcommonheads(ui, local, remote,
             ui.debug("taking quick initial sample\n")
             samplefunc = _takequicksample
             targetsize = initialsamplesize
-        if len(undecided) < targetsize:
-            sample = list(undecided)
-        else:
-            sample = samplefunc(local, ownheads, undecided, targetsize)
+        sample = samplefunc(local, ownheads, undecided, targetsize)
 
         roundtrips += 1
         progress.update(roundtrips)


More information about the Mercurial-devel mailing list