Patchwork D6551: statecheck: added support for cmdutil.afterresolvedstates

login
register
mail settings
Submitter phabricator
Date June 24, 2019, 9:44 a.m.
Message ID <ca9efa075701d0f8a06e3d2a46374113@localhost.localdomain>
Download mbox | patch
Permalink /patch/40662/
State Not Applicable
Headers show

Comments

phabricator - June 24, 2019, 9:44 a.m.
taapas1128 updated this revision to Diff 15645.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D6551?vs=15644&id=15645

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

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

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

CHANGE DETAILS




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

Patch

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, stopflag=False, cmdmsg="", cmdhint="",
-                 statushint=""):
+                 reportonly=False, continueflag=False, stopflag=False ,
+                 cmdmsg="", cmdhint="", statushint=""):
         """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.
@@ -110,6 +110,8 @@ 
         state or not.
         reportonly flag is used for operations like bisect where we just
         need to detect the operation using 'hg status --verbose'
+        continueflag is a boolean determines whether or not a command supports
+        `--continue` option or not.
         stopflag is a boolean that determines whether or not a command supports
         --stop flag
         cmdmsg is used to pass a different status message in case standard
@@ -130,6 +132,7 @@ 
         self._cmdmsg = cmdmsg
         self._stopflag = stopflag
         self._reportonly = reportonly
+        self._continueflag = continueflag
 
     def statusmsg(self):
         """returns the hint message corresponding to the command for
@@ -160,6 +163,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
@@ -183,7 +190,8 @@ 
 
 addunfinished(
     'graft', fname='graftstate', clearable=True, stopflag=True,
-    cmdhint=_("use 'hg graft --continue' or 'hg graft --stop' to stop"),
+    continueflag=True,
+    cmdhint=_("use 'hg graft --continue' or 'hg graft --stop' to stop")
 )
 addunfinished(
     'update', fname='updatestate', clearable=True,
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -3296,11 +3296,6 @@ 
         if s._clearable and s.isunfinished(repo):
             util.unlink(repo.vfs.join(s._fname))
 
-afterresolvedstates = [
-    ('graftstate',
-     _('hg graft --continue')),
-    ]
-
 def howtocontinue(repo):
     '''Check for an unfinished operation and return the command to finish
     it.
@@ -3312,9 +3307,11 @@ 
     a boolean.
     '''
     contmsg = _("continue: %s")
-    for f, msg in afterresolvedstates:
-        if repo.vfs.exists(f):
-            return contmsg % msg, True
+    for state in statemod._unfinishedstates:
+        if not state._continueflag:
+            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/shelve.py b/hgext/shelve.py
--- a/hgext/shelve.py
+++ b/hgext/shelve.py
@@ -1139,8 +1139,7 @@ 
 
 def extsetup(ui):
     statemod.addunfinished(
-        'unshelve', fname=shelvedstate._filename,
+        'unshelve', fname=shelvedstate._filename, continueflag=True,
         cmdmsg=_('unshelve already in progress')
     )
-    cmdutil.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
@@ -1950,6 +1950,5 @@ 
     entry[1].append(('t', 'tool', '',
                      _("specify merge tool for rebase")))
     cmdutil.summaryhooks.add('rebase', summaryhook)
-    statemod.addunfinished('rebase', fname='rebasestate', stopflag=True)
-    cmdutil.afterresolvedstates.append(
-        ['rebasestate', _('hg rebase --continue')])
+    statemod.addunfinished('rebase', fname='rebasestate', stopflag=True,
+                            continueflag=True)
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -2313,6 +2313,6 @@ 
 
 def extsetup(ui):
     cmdutil.summaryhooks.add('histedit', summaryhook)
-    statemod.addunfinished('histedit', fname='histedit-state', allowcommit=True)
-    cmdutil.afterresolvedstates.append(
-        ['histedit-state', _('hg histedit --continue')])
+    statemod.addunfinished('histedit', fname='histedit-state', allowcommit=True,
+                            continueflag=True)
+