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>')