D6552: statecheck: added support for cmdutil.afterresolvedstates

taapas1128 (Taapas Agrawal) phabricator at mercurial-scm.org
Thu Jun 20 12:09:48 EDT 2019


taapas1128 updated this revision to Diff 15615.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D6552?vs=15612&id=15615

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6552/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6552

AFFECTED FILES
  hgext/histedit.py
  hgext/rebase.py
  hgext/shelve.py
  hgext/transplant.py
  mercurial/state.py

CHANGE DETAILS

diff --git a/mercurial/state.py b/mercurial/state.py
--- a/mercurial/state.py
+++ b/mercurial/state.py
@@ -98,8 +98,8 @@
     """
 
     def __init__(self, opname, fname, clearable=False, allowcommit=False,
-                 reportonly=False, cmdmsg="", cmdhint="", statushint="",
-                 stopflag=False):
+                 reportonly=False, doesnotcontinue=False, cmdmsg="", cmdhint="",
+                 statushint="", stopflag=False):
         """opname is the name the command or operation
         fname is the file name in which data should be stored in .hg directory.
         It is None for merge command.
@@ -111,6 +111,8 @@
         reportonly flag is used for operations like bisect where we just
         need to detect the operation using 'hg status --verbose'
         cmdmsg is used to pass a different status message in case standard
+        doesnotcontinue flag determines whether a command supports `--continue`
+        option or not.
         message of the format "abort: cmdname in progress" is not desired.
         cmdhint is used to pass a different hint message in case standard
         message of the format "To continue: hg cmdname --continue
@@ -132,6 +134,7 @@
         self._cmdmsg = cmdmsg
         self._stopflag = stopflag
         self._reportonly = reportonly
+        self._doesnotcontinue = doesnotcontinue
 
     def statusmsg(self):
         """returns the hint message corresponding to the command for
@@ -162,6 +165,10 @@
             return _('%s in progress') % (self._opname)
         return self._cmdmsg
 
+    def continuemsg(self):
+        """ returns appropriate continue message corresponding to command"""
+        return _('hg %s --continue') % (self._opname)
+
     def isunfinished(self, repo):
         """determines whether a multi-step operation is in progress
         or not
@@ -188,19 +195,20 @@
     cmdhint=_("use 'hg graft --continue' or 'hg graft --stop' to stop"),
 )
 addunfinished(
-    'update', fname='updatestate', clearable=True,
+    'update', fname='updatestate', clearable=True, doesnotcontinue=True,
     cmdmsg=_('last update was interrupted'),
     cmdhint=_("use 'hg update' to get a consistent checkout"),
     statushint=_("To continue:    hg update")
 )
 addunfinished(
     'bisect', fname='bisect.state', allowcommit=True, reportonly=True,
+    doesnotcontinue=True,
     statushint=_('To mark the changeset good:    hg bisect --good\n'
                  'To mark the changeset bad:     hg bisect --bad\n'
                  'To abort:                      hg bisect --reset\n')
 )
 addunfinished(
-    'merge', fname=None, clearable=True, allowcommit=True,
+    'merge', fname=None, clearable=True, allowcommit=True, doesnotcontinue=True,
     cmdmsg=_('outstanding uncommitted merge'),
     statushint=_('To continue:    hg commit\n'
                  'To abort:       hg merge --abort'),
@@ -253,11 +261,6 @@
         if state.isunfinished(repo):
             return (state._opname, state.statusmsg())
 
-afterresolvedstates = [
-    ('graftstate',
-     _('hg graft --continue')),
-    ]
-
 def howtocontinue(repo):
     '''Check for an unfinished operation and return the command to finish
     it.
@@ -269,9 +272,11 @@
     a boolean.
     '''
     contmsg = _("continue: %s")
-    for f, msg in afterresolvedstates:
-        if repo.vfs.exists(f):
-            return contmsg % msg, True
+    for state in _unfinishedstates:
+        if state._doesnotcontinue:
+            continue
+        if state.isunfinished(repo):
+            return contmsg % state.continuemsg(), True
     if repo[None].dirty(missing=True, merge=False, branch=False):
         return contmsg % _("hg commit"), False
     return None, None
diff --git a/hgext/transplant.py b/hgext/transplant.py
--- a/hgext/transplant.py
+++ b/hgext/transplant.py
@@ -760,6 +760,7 @@
 def extsetup(ui):
     statemod.addunfinished (
         'transplant', fname='transplant/journal', clearable=True,
+        doesnotcontinue=True,
         statushint=_('To continue:    hg transplant --continue\n'
                      'To abort:       hg update'),
         cmdhint=_("use 'hg transplant --continue' or 'hg update' to abort")
diff --git a/hgext/shelve.py b/hgext/shelve.py
--- a/hgext/shelve.py
+++ b/hgext/shelve.py
@@ -1142,5 +1142,4 @@
         'unshelve', fname=shelvedstate._filename,
         cmdmsg=_('unshelve already in progress')
     )
-    statemod.afterresolvedstates.append(
-        [shelvedstate._filename, _('hg unshelve --continue')])
+
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -1951,5 +1951,3 @@
                      _("specify merge tool for rebase")))
     cmdutil.summaryhooks.add('rebase', summaryhook)
     statemod.addunfinished('rebase', fname='rebasestate', stopflag=True)
-    statemod.afterresolvedstates.append(
-        ['rebasestate', _('hg rebase --continue')])
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -2314,5 +2314,4 @@
 def extsetup(ui):
     cmdutil.summaryhooks.add('histedit', summaryhook)
     statemod.addunfinished('histedit', fname='histedit-state', allowcommit=True)
-    statemod.afterresolvedstates.append(
-        ['histedit-state', _('hg histedit --continue')])
+



To: taapas1128, durin42, martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list