diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -1919,6 +1919,14 @@ finally: state.clear() +def hgaborthistedit(ui, repo): + state = histeditstate(repo) + nobackup = not ui.configbool('rewrite', 'backup-bundle') + with repo.wlock() as wlock, repo.lock() as lock: + state.wlock = wlock + state.lock = lock + _aborthistedit(ui, repo, state, nobackup=nobackup) + def _edithisteditplan(ui, repo, state, rules): state.read() if not rules: @@ -2314,5 +2322,5 @@ def extsetup(ui): cmdutil.summaryhooks.add('histedit', summaryhook) statemod.addunfinished('histedit', fname='histedit-state', allowcommit=True, - continueflag=True) + continueflag=True, abortfunc=hgaborthistedit) 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,3 +1,12 @@ +#testcases abortcommand abortflag + +#if abortflag + $ cat >> $HGRCPATH < [alias] + > abort = histedit --abort + > EOF +#endif + Test argument handling and various data parsing ================================================== @@ -47,8 +56,9 @@ $ hg histedit --continue abort: no histedit in progress [255] - $ hg histedit --abort - abort: no histedit in progress + $ hg abort + abort: no histedit in progress (abortflag !) + abort: no operation in progress (abortcommand !) [255] Run a dummy edit to make sure we get tip^^ correctly via revsingle. @@ -358,7 +368,7 @@ Corrupt histedit state file $ sed 's/8fda0c726bf2/123456789012/' .hg/histedit-state > ../corrupt-histedit $ mv ../corrupt-histedit .hg/histedit-state - $ hg histedit --abort + $ hg abort warning: encountered an exception during histedit --abort; the repository may not have been completely cleaned up abort: $TESTTMP/foo/.hg/strip-backup/*-histedit.hg: $ENOENT$ (glob) (windows !) abort: $ENOENT$: '$TESTTMP/foo/.hg/strip-backup/*-histedit.hg' (glob) (no-windows !) diff --git a/tests/test-histedit-no-backup.t b/tests/test-histedit-no-backup.t --- a/tests/test-histedit-no-backup.t +++ b/tests/test-histedit-no-backup.t @@ -1,3 +1,12 @@ +#testcases abortcommand abortflag + +#if abortflag + $ cat >> $HGRCPATH < [alias] + > abort = histedit --abort + > EOF +#endif + $ . "$TESTDIR/histedit-helpers.sh" Enable extension used by this test @@ -44,7 +53,7 @@ Editing (7d5187087c79), you may commit or record as needed now. (hg histedit --continue to resume) [1] - $ hg histedit --abort + $ hg abort 1 files updated, 0 files merged, 0 files removed, 0 files unresolved saved backup bundle to $TESTTMP/foo/.hg/strip-backup/1d8f701c7b35-cf7be322-backup.hg saved backup bundle to $TESTTMP/foo/.hg/strip-backup/5c0056670bce-b54b65d0-backup.hg @@ -66,5 +75,6 @@ Editing (7d5187087c79), you may commit or record as needed now. (hg histedit --continue to resume) [1] - $ hg histedit --abort + + $ hg abort 1 files updated, 0 files merged, 0 files removed, 0 files unresolved diff --git a/tests/test-histedit-obsolete.t b/tests/test-histedit-obsolete.t --- a/tests/test-histedit-obsolete.t +++ b/tests/test-histedit-obsolete.t @@ -1,3 +1,12 @@ +#testcases abortcommand abortflag + +#if abortflag + $ cat >> $HGRCPATH < [alias] + > abort = histedit --abort + > EOF +#endif + $ . "$TESTDIR/histedit-helpers.sh" Enable obsolete @@ -522,7 +531,13 @@ (hg histedit --continue to resume) [1] - $ hg histedit --abort +#if abortcommand +when in dry-run mode + $ hg abort --dry-run + histedit in progress, will be aborted +#endif + + $ hg abort 1 files updated, 0 files merged, 0 files removed, 0 files unresolved saved backup bundle to $TESTTMP/abort/.hg/strip-backup/4dc06258baa6-dff4ef05-backup.hg