comparison mercurial/setdiscovery.py @ 39171:abce899c985f

setdiscovery: pass head revisions into sample functions This eliminates the last remaining consumer of heads() and related functionality in dagutil. Differential Revision: https://phab.mercurial-scm.org/D4319
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 17 Aug 2018 17:54:10 +0000
parents 754f389b87f2
children 8973fc62bfff
comparison
equal deleted inserted replaced
39170:754f389b87f2 39171:abce899c985f
90 for p in dag.parents(curr): 90 for p in dag.parents(curr):
91 if not revs or p in revs: 91 if not revs or p in revs:
92 dist.setdefault(p, d + 1) 92 dist.setdefault(p, d + 1)
93 visit.append(p) 93 visit.append(p)
94 94
95 def _takequicksample(repo, dag, revs, size): 95 def _takequicksample(repo, dag, headrevs, revs, size):
96 """takes a quick sample of size <size> 96 """takes a quick sample of size <size>
97 97
98 It is meant for initial sampling and focuses on querying heads and close 98 It is meant for initial sampling and focuses on querying heads and close
99 ancestors of heads. 99 ancestors of heads.
100 100
101 :dag: a dag object 101 :dag: a dag object
102 :headrevs: set of head revisions in local DAG to consider
102 :revs: set of revs to discover 103 :revs: set of revs to discover
103 :size: the maximum size of the sample""" 104 :size: the maximum size of the sample"""
104 sample = set(repo.revs('heads(%ld)', revs)) 105 sample = set(repo.revs('heads(%ld)', revs))
105 106
106 if len(sample) >= size: 107 if len(sample) >= size:
107 return _limitsample(sample, size) 108 return _limitsample(sample, size)
108 109
109 _updatesample(dag, None, dag.heads(), sample, quicksamplesize=size) 110 _updatesample(dag, None, headrevs, sample, quicksamplesize=size)
110 return sample 111 return sample
111 112
112 def _takefullsample(repo, dag, revs, size): 113 def _takefullsample(repo, dag, headrevs, revs, size):
113 sample = set(repo.revs('heads(%ld)', revs)) 114 sample = set(repo.revs('heads(%ld)', revs))
114 115
115 # update from heads 116 # update from heads
116 _updatesample(dag, revs, dag.headsetofconnecteds(revs), sample) 117 _updatesample(dag, revs, dag.headsetofconnecteds(revs), sample)
117 # update from roots 118 # update from roots
241 samplefunc = _takequicksample 242 samplefunc = _takequicksample
242 targetsize = initialsamplesize 243 targetsize = initialsamplesize
243 if len(undecided) < targetsize: 244 if len(undecided) < targetsize:
244 sample = list(undecided) 245 sample = list(undecided)
245 else: 246 else:
246 sample = samplefunc(local, dag, undecided, targetsize) 247 sample = samplefunc(local, dag, ownheads, undecided, targetsize)
247 248
248 roundtrips += 1 249 roundtrips += 1
249 progress.update(roundtrips) 250 progress.update(roundtrips)
250 ui.debug("query %i; still undecided: %i, sample size is: %i\n" 251 ui.debug("query %i; still undecided: %i, sample size is: %i\n"
251 % (roundtrips, len(undecided), len(sample))) 252 % (roundtrips, len(undecided), len(sample)))