--- a/hgext/evolve.py Wed Jul 31 19:56:28 2013 +0200
+++ b/hgext/evolve.py Tue Oct 22 11:51:01 2013 +0200
@@ -850,6 +850,8 @@
- rebase unstable changeset to make it stable again,
- create proper diff from bumped changeset,
- merge divergent changesets.
+ - update to a successor if the working directory parent is
+ obsolete
By default, take the first trouble changeset that looks relevant.
@@ -881,6 +883,40 @@
tr = _picknexttroubled(ui, repo, anyopt or allopt)
if tr is None:
+ if repo['.'].obsolete():
+ displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
+ successors = set()
+
+ for successorsset in obsolete.successorssets(repo, repo['.'].node()):
+ for nodeid in successorsset:
+ successors.add(repo[nodeid])
+
+ if not successors:
+ ui.warn(_('parent is obsolete without successors; ' +
+ 'likely killed\n'))
+ return 2
+
+ elif len(successors) > 1:
+ ui.warn(_('parent is obsolete with multiple successors:\n'))
+
+ for ctx in sorted(successors, key=lambda ctx: ctx.rev()):
+ displayer.show(ctx)
+
+ return 2
+
+ else:
+ ctx = successors.pop()
+
+ ui.status(_('update:'))
+ if not ui.quiet:
+ displayer.show(ctx)
+
+ if dryrunopt:
+ print 'hg update %s' % ctx.rev()
+ return 0
+ else:
+ return hg.update(repo, ctx.rev())
+
troubled = repo.revs('troubled()')
if troubled:
ui.write_err(_('nothing to evolve here\n'))