[PATCH 6 of 7 clfilter part 1 V3] clfilter: use filtering in `visiblebranchmap`
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Mon Dec 17 10:50:15 CST 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1355762554 -3600
# Node ID 9f84ba46fe34cf9d8d5b80f3a799208946680585
# Parent 462d2222342c321285d62cb8cfd6e2138af6a9cf
clfilter: use filtering in `visiblebranchmap`
Here is the first real use of changelog filtering. The change is very small to
allow testing the new filter with a setup close to the original one.
We replace custom post processing on branchmap function by call to the
standard code pass on a filtering repo.
In later coming will have wider usage of filtering that will make the dedicated
function useless.
diff --git a/mercurial/discovery.py b/mercurial/discovery.py
--- a/mercurial/discovery.py
+++ b/mercurial/discovery.py
@@ -353,25 +353,6 @@ def visibleheads(repo):
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 computing the standard branchmap version.
- sroots = repo._phasecache.phaseroots[phases.secret]
- if sroots or repo.obsstore:
- vbranchmap = {}
- for branch, nodes in repo.branchmap().iteritems():
- # search for secret heads.
- for n in nodes:
- if repo[n].phase() >= phases.secret:
- nodes = None
- break
- # if secret heads were found we must compute them again
- if nodes is None:
- s = repo.set('heads(branch(%s) - secret() - extinct())',
- branch)
- nodes = [c.node() for c in s]
- vbranchmap[branch] = nodes
- else:
- vbranchmap = repo.branchmap()
- return vbranchmap
+ return repo.filtered('unserved').branchmap()
More information about the Mercurial-devel
mailing list