##// END OF EJS Templates
repoview: simplify process in _getstatichidden...
Pierre-Yves David -
r24617:f76595f6 default
parent child Browse files
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 hideable = hideablerevs(repo)
37 hidden = set(hideablerevs(repo))
38 if hideable:
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 = [(-r, False) for r in repo.changelog.headrevs()]
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, blocked = heappop(heap)
46 rev = -heappop(heap)
48 rev = - rev
47 # Skip nodes which are public (guaranteed to not be hidden)
49 phase = getphase(repo, rev)
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 blocked = True
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, (- parent, blocked))
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