--- a/mercurial/phases.py Fri Apr 27 13:18:09 2012 -0500
+++ b/mercurial/phases.py Tue Apr 24 16:32:44 2012 +0200
@@ -263,6 +263,28 @@
vheads = repo.heads()
return vheads
+def visiblebranchmap(repo):
+ """return a branchmap for the visible set"""
+ # XXX Recomputing this data on the fly is very slow. We should build a
+ # XXX cached version while computin the standard branchmap version.
+ sroots = repo._phaseroots[secret]
+ if sroots:
+ vbranchmap = {}
+ for branch, nodes in repo.branchmap().iteritems():
+ # search for secret heads.
+ for n in nodes:
+ if repo[n].phase() >= secret:
+ nodes = None
+ break
+ # if secreat heads where found we must compute them again
+ if nodes is None:
+ s = repo.set('heads(branch(%s) - secret())', branch)
+ nodes = [c.node() for c in s]
+ vbranchmap[branch] = nodes
+ else:
+ vbranchmap = repo.branchmap()
+ return vbranchmap
+
def analyzeremotephases(repo, subset, roots):
"""Compute phases heads and root in a subset of node from root dict