hgext/evolve.py
changeset 1316 f11363699766
parent 1315 445d7f46f25d
child 1317 48f78feb0b47
--- a/hgext/evolve.py	Thu Apr 30 15:11:00 2015 -0700
+++ b/hgext/evolve.py	Mon May 04 16:01:45 2015 -0700
@@ -1152,6 +1152,53 @@
         mean = sum(len(x[1]) for x in allpclusters) // nbcluster
         ui.write('        mean length:        %9i\n' % mean)
 
+def handlenotrouble(ui, repo, startnode, dryrunopt):
+    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:
+                return 0
+            else:
+                res = hg.update(repo, ctx.rev())
+                if ctx != startnode:
+                    ui.status(_('working directory is now at %s\n') % ctx)
+                return res
+
+    troubled = repo.revs('troubled()')
+    if troubled:
+        ui.write_err(_('nothing to evolve here\n'))
+        ui.status(_('(%i troubled changesets, do you want --any ?)\n')
+                  % len(troubled))
+        return 2
+    else:
+        ui.write_err(_('no troubled changesets\n'))
+        return 1
 @command('^evolve|stabilize|solve',
     [('n', 'dry-run', False,
         'do not perform actions, just print what would be done'),
@@ -1207,56 +1254,12 @@
 
     tro = _picknexttroubled(ui, repo, anyopt or allopt)
     if tro 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:
-                    return 0
-                else:
-                    res = hg.update(repo, ctx.rev())
-                    if ctx != startnode:
-                        ui.status(_('working directory is now at %s\n') % ctx)
-                    return res
-
-        troubled = repo.revs('troubled()')
-        if troubled:
-            ui.write_err(_('nothing to evolve here\n'))
-            ui.status(_('(%i troubled changesets, do you want --any ?)\n')
-                      % len(troubled))
-            return 2
-        else:
-            ui.write_err(_('no troubled changesets\n'))
-            return 1
+        return handlenotrouble(ui, repo, startnode, dryrunopt)
 
     def progresscb():
         if allopt:
             ui.progress('evolve', seen, unit='changesets', total=count)
+
     seen = 1
     count = allopt and _counttroubled(ui, repo) or 1