Comments
Patch
@@ -20,8 +20,10 @@
return obsolete.getrevs(repo, 'obsolete')
def _gethiddenblockers(repo):
- """Get revisions that will block hidden changesets from being filtered
+ """Get revisions that will block hidden changesets from being filtered and
+ can be cached.
+ Additional non-cached hidden blockers are computed in _getdynamicblockers.
This is a standalone function to help extensions to wrap it."""
assert not repo.changelog.filteredrevs
hideable = hideablerevs(repo)
@@ -34,16 +36,26 @@
tofilter = repo.revs(
'(%ld) and children(%ld)', list(revs), list(hideable))
blockers = [r for r in tofilter if r not in hideable]
- for par in repo[None].parents():
- blockers.append(par.rev())
- for bm in repo._bookmarks.values():
- blockers.append(cl.rev(bm))
- tags = {}
- tagsmod.readlocaltags(repo.ui, repo, tags, {})
- if tags:
- blockers.extend(cl.rev(t[0]) for t in tags.values())
+ return blockers
+
return blockers
+def _getdynamicblockers(repo):
+ """Get revisions that will block hidden changesets and are likely to change,
+ but unlikely to create hidden blockers. They won't be cached, so be careful
+ with adding additional computation."""
+
+ cl = repo.changelog
+ blockers = []
+ blockers.extend([par.rev() for par in repo[None].parents()])
+ blockers.extend([cl.rev(bm) for bm in repo._bookmarks.values()])
+
+ tags = {}
+ tagsmod.readlocaltags(repo.ui, repo, tags, {})
+ if tags:
+ blockers.extend([cl.rev(t[0]) for t in tags.values()])
+ return frozenset(blockers)
+
def computehidden(repo):
"""compute the set of hidden revision to filter