Mercurial > public > mercurial-scm > evolve
diff hgext/evolution.py @ 87:246b8fefd0a5
[evolution/obsolete] very experimental and crude evolve support.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Mon, 19 Sep 2011 03:18:08 +0200 |
parents | 8108d566a8b5 |
children | 64fe5a4f877e |
line wrap: on
line diff
--- a/hgext/evolution.py Mon Sep 19 01:57:43 2011 +0200 +++ b/hgext/evolution.py Mon Sep 19 03:18:08 2011 +0200 @@ -32,9 +32,13 @@ def extsetup(ui): try: - rebase = extensions.find('obsolete') + obsolete = extensions.find('obsolete') except KeyError: raise error.Abort(_('evolution extension require obsolete extension.')) + try: + rebase = extensions.find('rebase') + except KeyError: + raise error.Abort(_('evolution extension require rebase extension.')) ### changeset rewriting logic ############################# @@ -109,6 +113,23 @@ cmdtable = {} command = cmdutil.command(cmdtable) +@command('^evolve', + [], + '') +def evolve(ui, repo): + """suggest the next evolution step""" + obsolete = extensions.find('obsolete') + next = min(obsolete.unstables(repo)) + obs = repo[next].parents()[0] + if not obs.obsolete(): + obs = next.parents()[1] + assert obs.obsolete() + newer = obsolete.newerversion(repo, obs.node()) + target = newer[-1] + repo.ui.status('hg rebase --dest %s --source %s --detach \n' % (repo[target].rev(), next)) + + + @command('^kill', [], '<revs>')