[PATCH 1 of 3 evolve-ext] evolve: make evolve --all reuse code of evolve --rev

Laurent Charignon lcharignon at fb.com
Thu Jun 4 22:07:45 UTC 2015


# HG changeset patch
# User Laurent Charignon <lcharignon at fb.com>
# Date 1433452413 25200
#      Thu Jun 04 14:13:33 2015 -0700
# Node ID 28f278575b4ce96477f34b1b40f7a80f31084039
# Parent  82dd98428b8d85ea0c9acefebcff40ea59902c66
evolve: make evolve --all reuse code of evolve --rev

Before this patch, evolve --all has its own code path making the evolve function
more complex than it had to. This patch makes evolve --all reuse the code of
evolve --rev to simplify the evolve function.

diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -1360,6 +1360,8 @@
         if revopt or allopt:
             ui.progress('evolve', seen, unit='changesets', total=count)
 
+    if allopt and revopt:
+        raise util.Abort('cannot specify both "--all" and "--rev"')
     # Continuation handling
     if contopt:
         if anyopt:
@@ -1368,11 +1370,10 @@
             raise util.Abort('cannot specify both "--all" and "--continue"')
         graftcmd = commands.table['graft'][0]
         return graftcmd(ui, repo, old_obsolete=True, **{'continue': True})
-    # Rev specified on the commands line
-    if revopt:
-        revs = repo.revs(revopt)
+    # --rev or --all
+    if revopt or allopt:
         troubled = repo.revs('troubled()')
-        _revs = revs & troubled
+        _revs = repo.revs(revopt) & troubled if revopt else troubled
         if not _revs:
             ui.write_err("No troubled changes in the specified revisions\n")
         else:
@@ -1388,23 +1389,12 @@
             progresscb()
             _cleanup(ui, repo, startnode, showprogress)
         return
-    nexttrouble = _picknexttroubled(ui, repo, anyopt or allopt)
+    nexttrouble = _picknexttroubled(ui, repo, anyopt)
     # No trouble to resolve
     if not nexttrouble:
         return _handlenotrouble(ui, repo, startnode, dryrunopt)
 
-    if allopt:
-        # Resolving all the troubles
-        while nexttrouble:
-            progresscb()
-            _solveone(ui, repo, nexttrouble, dryrunopt, confirmopt, progresscb)
-            seen += 1
-            progresscb()
-            nexttrouble= _picknexttroubled(ui, repo, anyopt or allopt)
-    else:
-        # Resolving a single trouble
-        _solveone(ui, repo, nexttrouble, dryrunopt, confirmopt, progresscb)
-
+    _solveone(ui, repo, nexttrouble, dryrunopt, confirmopt, progresscb)
     _cleanup(ui, repo, startnode, showprogress)
 
 


More information about the Mercurial-devel mailing list