# HG changeset patch # User Taapas Agrawal # Date 2019-06-20 06:10:08 # Node ID 0231032729c448be34de9d7a220d4cc3117905ec # Parent 12243f15d53ec86e1297ae4d01edc81677583410 statecheck: added support for cmdutil.afterresolvedstates This removes `afterresolvedstates` from `cmdutil` and adds support for it in `_statecheck` class. A new flag `continueflag` is added to the class to check whether an operation supports `--continue` option or not. Tests remain unchanged. Differential Revision: https://phab.mercurial-scm.org/D6551 diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -2313,6 +2313,6 @@ def summaryhook(ui, repo): 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) + diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1950,6 +1950,5 @@ def uisetup(ui): 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/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -1141,8 +1141,7 @@ def shelvecmd(ui, repo, *pats, **opts): 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/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -3296,11 +3296,6 @@ def clearunfinished(repo): 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 @@ def howtocontinue(repo): 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/mercurial/state.py b/mercurial/state.py --- a/mercurial/state.py +++ b/mercurial/state.py @@ -98,8 +98,8 @@ class _statecheck(object): """ 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 @@ class _statecheck(object): 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 @@ class _statecheck(object): 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 @@ class _statecheck(object): 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 @@ def addunfinished(opname, **kwargs): 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,