Mercurial > hg > mercurial-source
diff mercurial/phases.py @ 17205:97eff00046de
repo: move visibleheads and visiblebranchmap logic in discovery
They were previously inside the mercurial.phases module, but obsolete
logic will need them to exclude `extinct` changesets from pull and
push.
The proper and planned way to implement such filtering is still to apply a
changelog level filtering. But we are far to late in the cycle to implement and
push such a critical piece of code (changelog filtering). With Matt Mackall
approval I'm extending this quick and dirty mechanism for obsolete purpose.
Changelog level filtering should come during the next release cycle.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Tue, 17 Jul 2012 01:22:31 +0200 |
parents | 1093ad1e8903 |
children | e7cfe3587ea4 63e302be813f |
line wrap: on
line diff
--- a/mercurial/phases.py +++ b/mercurial/phases.py @@ -329,43 +329,6 @@ finally: lock.release() -def visibleheads(repo): - """return the set of visible head of this repo""" - # XXX we want a cache on this - sroots = repo._phasecache.phaseroots[secret] - if sroots: - # XXX very slow revset. storing heads or secret "boundary" would help. - revset = repo.set('heads(not (%ln::))', sroots) - - vheads = [ctx.node() for ctx in revset] - if not vheads: - vheads.append(nullid) - else: - 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._phasecache.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