Show More
@@ -20,43 +20,43 b' from . import (' | |||
|
20 | 20 | baseset = smartset.baseset |
|
21 | 21 | generatorset = smartset.generatorset |
|
22 | 22 | |
|
23 | def revancestors(repo, revs, followfirst): | |
|
24 | """Like revlog.ancestors(), but supports followfirst.""" | |
|
23 | def _genrevancestors(repo, revs, followfirst): | |
|
25 | 24 | if followfirst: |
|
26 | 25 | cut = 1 |
|
27 | 26 | else: |
|
28 | 27 | cut = None |
|
29 | 28 | cl = repo.changelog |
|
29 | revs.sort(reverse=True) | |
|
30 | irevs = iter(revs) | |
|
31 | h = [] | |
|
30 | 32 | |
|
31 | def iterate(): | |
|
32 | revs.sort(reverse=True) | |
|
33 | irevs = iter(revs) | |
|
34 | h = [] | |
|
35 | ||
|
36 | inputrev = next(irevs, None) | |
|
37 | if inputrev is not None: | |
|
38 | heapq.heappush(h, -inputrev) | |
|
33 | inputrev = next(irevs, None) | |
|
34 | if inputrev is not None: | |
|
35 | heapq.heappush(h, -inputrev) | |
|
39 | 36 | |
|
40 |
|
|
|
41 |
|
|
|
42 |
|
|
|
43 |
|
|
|
44 |
|
|
|
45 |
|
|
|
46 |
|
|
|
47 |
|
|
|
48 |
|
|
|
49 |
|
|
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
|
56 |
|
|
|
57 |
|
|
|
37 | seen = set() | |
|
38 | while h: | |
|
39 | current = -heapq.heappop(h) | |
|
40 | if current == inputrev: | |
|
41 | inputrev = next(irevs, None) | |
|
42 | if inputrev is not None: | |
|
43 | heapq.heappush(h, -inputrev) | |
|
44 | if current not in seen: | |
|
45 | seen.add(current) | |
|
46 | yield current | |
|
47 | try: | |
|
48 | for parent in cl.parentrevs(current)[:cut]: | |
|
49 | if parent != node.nullrev: | |
|
50 | heapq.heappush(h, -parent) | |
|
51 | except error.WdirUnsupported: | |
|
52 | for parent in repo[current].parents()[:cut]: | |
|
53 | if parent.rev() != node.nullrev: | |
|
54 | heapq.heappush(h, -parent.rev()) | |
|
58 | 55 | |
|
59 | return generatorset(iterate(), iterasc=False) | |
|
56 | def revancestors(repo, revs, followfirst): | |
|
57 | """Like revlog.ancestors(), but supports followfirst.""" | |
|
58 | gen = _genrevancestors(repo, revs, followfirst) | |
|
59 | return generatorset(gen, iterasc=False) | |
|
60 | 60 | |
|
61 | 61 | def revdescendants(repo, revs, followfirst): |
|
62 | 62 | """Like revlog.descendants() but supports followfirst.""" |
General Comments 0
You need to be logged in to leave comments.
Login now