##// END OF EJS Templates
dagop: compute depth in revancestors() generator...
Yuya Nishihara -
r33001:92d0945a default
parent child Browse files
Show More
@@ -31,30 +31,32 b' def _genrevancestors(repo, revs, followf'
31 31 # without fully computing the input revs
32 32 revs.sort(reverse=True)
33 33 irevs = iter(revs)
34 pendingheap = []
34 pendingheap = [] # [(-rev, depth), ...] (i.e. lower depth first)
35 35
36 36 inputrev = next(irevs, None)
37 37 if inputrev is not None:
38 heapq.heappush(pendingheap, -inputrev)
38 heapq.heappush(pendingheap, (-inputrev, 0))
39 39
40 40 lastrev = None
41 41 while pendingheap:
42 currev = -heapq.heappop(pendingheap)
42 currev, curdepth = heapq.heappop(pendingheap)
43 currev = -currev
43 44 if currev == inputrev:
44 45 inputrev = next(irevs, None)
45 46 if inputrev is not None:
46 heapq.heappush(pendingheap, -inputrev)
47 heapq.heappush(pendingheap, (-inputrev, 0))
47 48 if currev != lastrev:
48 49 lastrev = currev
49 50 yield currev
51 pdepth = curdepth + 1
50 52 try:
51 53 for prev in cl.parentrevs(currev)[:cut]:
52 54 if prev != node.nullrev:
53 heapq.heappush(pendingheap, -prev)
55 heapq.heappush(pendingheap, (-prev, pdepth))
54 56 except error.WdirUnsupported:
55 57 for pctx in repo[currev].parents()[:cut]:
56 58 if pctx.rev() != node.nullrev:
57 heapq.heappush(pendingheap, -pctx.rev())
59 heapq.heappush(pendingheap, (-pctx.rev(), pdepth))
58 60
59 61 def revancestors(repo, revs, followfirst):
60 62 """Like revlog.ancestors(), but supports followfirst."""
General Comments 0
You need to be logged in to leave comments. Login now