[PATCH 1 of 5] cmdutil: provide a way to report how to continue

timeless timeless at mozdev.org
Thu Feb 4 03:56:20 UTC 2016


# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1454557448 0
#      Thu Feb 04 03:44:08 2016 +0000
# Node ID 9606a1513d812239259485be8469a1493faa60bf
# Parent  01a5143cd25f285f8c745a92986cd7186bb32c90
cmdutil: provide a way to report how to continue

checkafterresolved allows Mercurial to suggest what command to
use next. If users try to continue the wrong command, there
wasn't a good way for the command to suggest what to do next.

Split checcmdutil into howtocontinue and checkafterresolved.
Introduce wrongtooltocontinue which handles raising an Abort with
the hint from howtocontinue.

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -3334,13 +3334,28 @@
      _('hg graft --continue')),
     ]
 
-def checkafterresolved(repo):
-    contmsg = _("continue: %s\n")
+def howtocontinue(repo):
+    contmsg = _("continue: %s")
     for f, msg in afterresolvedstates:
         if repo.vfs.exists(f):
-            repo.ui.warn(contmsg % msg)
-            return
-    repo.ui.note(contmsg % _("hg commit"))
+            return contmsg % msg, repo.ui.warn
+    workingctx = repo[None]
+    if (any(repo.status())
+     or any(workingctx.sub(s).dirty() for s in workingctx.substate)):
+        return contmsg % _("hg commit"), repo.ui.note
+    return None, None
+
+def checkafterresolved(repo):
+    msg, reporter = howtocontinue(repo)
+    if msg is not None and reporter is not None:
+        reporter("%s\n" % msg)
+
+def wrongtooltocontinue(repo, msg):
+    after = howtocontinue(repo)
+    hint = None
+    if after:
+        hint = after[0]
+    raise error.Abort(msg, hint=hint)
 
 class dirstateguard(object):
     '''Restore dirstate at unexpected failure.


More information about the Mercurial-devel mailing list