# HG changeset patch # User Pierre-Yves David # Date 1324291064 -3600 # Node ID 21eb048edc19a9b78ae262d222c0de1f3ad6c4d2 # Parent 0cb45fef99ba14c3cba823edba604d9867158aeb phases: add a function to compute visible heads This function will be used to hide secret changeset. diff -r 0cb45fef99ba -r 21eb048edc19 mercurial/phases.py --- a/mercurial/phases.py Sun Dec 18 23:16:46 2011 +0100 +++ b/mercurial/phases.py Mon Dec 19 11:37:44 2011 +0100 @@ -236,6 +236,21 @@ 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