diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -1781,8 +1781,7 @@ raise error.Abort(_('histedit cancelled\n')) # rebuild state if goal == goalcontinue: - state.read() - state = bootstrapcontinue(ui, state, opts) + return resumehistedit(ui, repo, state) elif goal == goaleditplan: _edithisteditplan(ui, repo, state, rules) return @@ -1839,6 +1838,21 @@ state.write() +def resumehistedit(ui, repo, state=None): + if not state: + state = histeditstate(repo) + with repo.wlock() as wlock, repo.lock() as lock: + state.wlock = wlock + state.lock = lock + opts = {'keep' : state.keep} + fm = ui.formatter('histedit', opts) + fm.startitem() + state.read() + state = bootstrapcontinue(ui, state, opts) + _continuehistedit(ui, repo, state) + _finishhistedit(ui, repo, state, fm) + fm.end() + def _finishhistedit(ui, repo, state, fm): """This action runs when histedit is finishing its session""" hg.updaterepo(repo, state.parentctxnode, overwrite=False) @@ -2322,5 +2336,6 @@ def extsetup(ui): cmdutil.summaryhooks.add('histedit', summaryhook) statemod.addunfinished('histedit', fname='histedit-state', allowcommit=True, - continueflag=True, abortfunc=hgaborthistedit) - + continueflag=True, abortfunc=hgaborthistedit, + continuefunc=resumehistedit) + diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t --- a/tests/test-histedit-arguments.t +++ b/tests/test-histedit-arguments.t @@ -1,4 +1,4 @@ -#testcases abortcommand abortflag +#testcases commandmode abortflag continueflag #if abortflag $ cat >> $HGRCPATH < EOF #endif +#if continueflag + $ cat >> $HGRCPATH < [alias] + > continue = histedit --continue + > EOF +#endif + Test argument handling and various data parsing ================================================== @@ -53,12 +60,13 @@ histedit --continue/--abort with no existing state -------------------------------------------------- - $ hg histedit --continue - abort: no histedit in progress + $ hg continue + abort: no histedit in progress (continueflag !) + abort: no operation in progress (no-continueflag !) [255] $ hg abort abort: no histedit in progress (abortflag !) - abort: no operation in progress (abortcommand !) + abort: no operation in progress (no-abortflag !) [255] Run a dummy edit to make sure we get tip^^ correctly via revsingle. @@ -163,7 +171,7 @@ $ echo alpha >> alpha $ mv .hg/histedit-state.back .hg/histedit-state - $ hg histedit --continue + $ hg continue saved backup bundle to $TESTTMP/foo/.hg/strip-backup/08d98a8350f3-02594089-histedit.hg $ hg log -G -T '{rev} {shortest(node)} {desc}\n' -r 2:: @ 4 f5ed five @@ -493,7 +501,7 @@ $ hg resolve -m --all (no more unresolved files) continue: hg histedit --continue - $ hg histedit --cont + $ hg continue merging foo warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') Editing (6f2f0241f119), you may commit or record as needed now. @@ -516,7 +524,7 @@ > evolution.allowunstable=True > EOF $ hg commit --amend -m 'allow this fold' - $ hg histedit --continue + $ hg continue $ cd ..