Mercurial > evolve
changeset 393:ac8213faeda8
backout 97b75bbfacc5. Use cached version of obsolete, unstable and extinct
The core version are far too slow
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Thu, 26 Jul 2012 15:17:34 +0200 |
parents | 04e67d6f1913 |
children | 0bd63f294a6f |
files | hgext/obsolete.py |
diffstat | 1 files changed, 43 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/obsolete.py Thu Jul 26 15:09:08 2012 +0200 +++ b/hgext/obsolete.py Thu Jul 26 15:17:34 2012 +0200 @@ -87,6 +87,22 @@ ### Patch changectx ############################# +def unstable(ctx): + """is the changeset unstable (have obsolete ancestor)""" + if ctx.node() is None: + return False + return ctx.rev() in ctx._repo._unstableset + +context.changectx.unstable = unstable + +def extinct(ctx): + """is the changeset extinct by other""" + if ctx.node() is None: + return False + return ctx.rev() in ctx._repo._extinctset + +context.changectx.extinct = extinct + def latecomer(ctx): """is the changeset latecomer (Try to succeed to public change)""" if ctx.node() is None: @@ -112,11 +128,33 @@ args = revset.getargs(x, 0, 0, 'hidden takes no argument') return [r for r in subset if r in repo.changelog.hiddenrevs] +def revsetobsolete(repo, subset, x): + """obsolete changesets""" + args = revset.getargs(x, 0, 0, 'obsolete takes no argument') + return [r for r in subset if r in repo._obsoleteset and repo._phasecache.phase(repo, r) > 0] + +# XXX Backward compatibility, to be removed once stabilized +if '_phasecache' not in vars(localrepo.localrepository): # new api + def revsetobsolete(repo, subset, x): + """obsolete changesets""" + args = revset.getargs(x, 0, 0, 'obsolete takes no argument') + return [r for r in subset if r in repo._obsoleteset and repo._phaserev[r] > 0] + +def revsetunstable(repo, subset, x): + """non obsolete changesets descendant of obsolete one""" + args = revset.getargs(x, 0, 0, 'unstable takes no arguments') + return [r for r in subset if r in repo._unstableset] + def revsetsuspended(repo, subset, x): """obsolete changesets with non obsolete descendants""" args = revset.getargs(x, 0, 0, 'suspended takes no arguments') return [r for r in subset if r in repo._suspendedset] +def revsetextinct(repo, subset, x): + """obsolete changesets without obsolete descendants""" + args = revset.getargs(x, 0, 0, 'extinct takes no arguments') + return [r for r in subset if r in repo._extinctset] + def revsetlatecomer(repo, subset, x): """latecomer, Try to succeed to public change""" args = revset.getargs(x, 0, 0, 'latecomer takes no arguments') @@ -320,7 +358,10 @@ def extsetup(ui): revset.symbols["hidden"] = revsethidden + revset.symbols["obsolete"] = revsetobsolete + revset.symbols["unstable"] = revsetunstable revset.symbols["suspended"] = revsetsuspended + revset.symbols["extinct"] = revsetextinct revset.symbols["latecomer"] = revsetlatecomer revset.symbols["conflicting"] = revsetconflicting revset.symbols["obsparents"] = revsetprecursors # DEPR @@ -334,11 +375,11 @@ # warning about more obsolete for cmd in ['commit', 'push', 'pull', 'graft', 'phase', 'unbundle']: - extensions.wrapcommand(commands.table, cmd, warnobserrors) + entry = extensions.wrapcommand(commands.table, cmd, warnobserrors) try: rebase = extensions.find('rebase') if rebase: - extensions.wrapcommand(rebase.cmdtable, 'rebase', warnobserrors) + entry = extensions.wrapcommand(rebase.cmdtable, 'rebase', warnobserrors) extensions.wrapfunction(rebase, 'buildstate', buildstate) extensions.wrapfunction(rebase, 'defineparents', defineparents) extensions.wrapfunction(rebase, 'concludenode', concludenode)