# HG changeset patch # User Pierre-Yves David # Date 2011-12-19 10:37:44 # Node ID 21eb048edc19a9b78ae262d222c0de1f3ad6c4d2 # Parent 0cb45fef99ba14c3cba823edba604d9867158aeb phases: add a function to compute visible heads This function will be used to hide secret changeset. diff --git a/mercurial/phases.py b/mercurial/phases.py --- a/mercurial/phases.py +++ b/mercurial/phases.py @@ -236,6 +236,21 @@ def pushphase(repo, nhex, oldphasestr, n finally: lock.release() +def visibleheads(repo): + """return the set of visible head of this repo""" + # XXX we want a cache on this + sroots = repo._phaseroots[2] + 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 analyzeremotephases(repo, subset, roots): """Compute phases heads and root in a subset of node from root dict