Show More
@@ -34,35 +34,30 b' def _getstatichidden(repo):' | |||||
34 |
|
34 | |||
35 | """ |
|
35 | """ | |
36 | assert not repo.changelog.filteredrevs |
|
36 | assert not repo.changelog.filteredrevs | |
37 |
hid |
|
37 | hidden = set(hideablerevs(repo)) | |
38 |
if hid |
|
38 | if hidden: | |
39 | actuallyhidden = {} |
|
|||
40 | getphase = repo._phasecache.phase |
|
39 | getphase = repo._phasecache.phase | |
41 | getparentrevs = repo.changelog.parentrevs |
|
40 | getparentrevs = repo.changelog.parentrevs | |
42 |
heap = [ |
|
41 | heap = [-r for r in repo.changelog.headrevs()] | |
43 | heapq.heapify(heap) |
|
42 | heapq.heapify(heap) | |
44 | heappop = heapq.heappop |
|
43 | heappop = heapq.heappop | |
45 | heappush = heapq.heappush |
|
44 | heappush = heapq.heappush | |
46 | while heap: |
|
45 | while heap: | |
47 |
rev |
|
46 | rev = -heappop(heap) | |
48 | rev = - rev |
|
47 | # Skip nodes which are public (guaranteed to not be hidden) | |
49 |
|
|
48 | if not getphase(repo, rev): | |
50 | # Skip nodes which are public (guaranteed to not be hidden) and |
|
|||
51 | # nodes which have already been processed and won't be blocked by |
|
|||
52 | # the previous node. |
|
|||
53 | if phase == 0 or (not blocked and rev in actuallyhidden): |
|
|||
54 | continue |
|
49 | continue | |
55 | if rev in hideable: |
|
50 | # All children have been processed so at that point, if no children | |
56 | if blocked: |
|
51 | # removed 'rev' from the 'hidden' set, 'rev' is going to be hidden. | |
57 | actuallyhidden[rev] = False |
|
52 | blocker = rev not in hidden | |
58 | else: |
|
53 | for parent in getparentrevs(rev): | |
59 | actuallyhidden.setdefault(rev, True) |
|
54 | if parent == nullrev: | |
60 | else: |
|
55 | continue | |
61 |
|
|
56 | if blocker: | |
62 |
|
57 | # If visible, ensure parent will be visible too | ||
63 | for parent in (p for p in getparentrevs(rev) if p != nullrev): |
|
58 | hidden.discard(parent) | |
64 |
heappush(heap, |
|
59 | heappush(heap, -parent) | |
65 | return set(rev for rev, hidden in actuallyhidden.iteritems() if hidden) |
|
60 | return hidden | |
66 |
|
61 | |||
67 | def _getdynamicblockers(repo): |
|
62 | def _getdynamicblockers(repo): | |
68 | """Non-cacheable revisions blocking hidden changesets from being filtered. |
|
63 | """Non-cacheable revisions blocking hidden changesets from being filtered. |
General Comments 0
You need to be logged in to leave comments.
Login now