# HG changeset patch # User Taapas Agrawal # Date 1562866006 -19800 # Node ID 2e14a93863165a5c7769494a890363a18de44c67 # Parent 8c780c3eb11676e162d900d3a40b6adc77384519 abort: added support for evolve to hg abort This patch adds support of `hg evolve --abort` to `hg abort` plan. This involves creating a `hgabortevolve()` function under `evolvecmd` which ensures abortion of evolve via `hg abort`. This function is then registered using `addunfinished()` in `__init__.py`. Results are shown as tests. diff -r 8c780c3eb116 -r 2e14a9386316 hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Fri Jul 12 23:43:25 2019 +0530 +++ b/hgext3rd/evolve/__init__.py Thu Jul 11 22:56:46 2019 +0530 @@ -1362,7 +1362,8 @@ '(also see `hg help evolve.interrupted`)') statemod.addunfinished('evolve', fname='evolvestate', continueflag=True, stopflag=True, - statushint=_msg) + statushint=_msg, + abortfunc=evolvecmd.hgabortevolve) statemod.addunfinished('pick', fname='pickstate', continueflag=True) else: # compat <= hg-5.0 (5f2f6912c9e6) diff -r 8c780c3eb116 -r 2e14a9386316 hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Fri Jul 12 23:43:25 2019 +0530 +++ b/hgext3rd/evolve/evolvecmd.py Thu Jul 11 22:56:46 2019 +0530 @@ -1912,6 +1912,21 @@ raise error.Abort(_("unable to abort interrupted evolve, use 'hg " "evolve --stop' to stop evolve")) +def hgabortevolve(ui, repo): + """logic for aborting evolve using 'hg abort'""" + with repo.wlock(), repo.lock(): + evolvestate = state.cmdstate(repo) + evolvestate.load() + if evolvestate['command'] != 'evolve': + pctx = repo['.'] + hg.updaterepo(repo, pctx.node(), True) + ui.status(_('evolve aborted\n')) + ui.status(_('working directory is now at %s\n') + % pctx.hex()[:12]) + evolvestate.delete() + return 0 + return abortevolve(ui, repo, evolvestate) + def continueevolve(ui, repo, evolvestate): """logic for handling of `hg evolve --continue`""" diff -r 8c780c3eb116 -r 2e14a9386316 tests/test-evolve-abort-orphan.t --- a/tests/test-evolve-abort-orphan.t Fri Jul 12 23:43:25 2019 +0530 +++ b/tests/test-evolve-abort-orphan.t Thu Jul 11 22:56:46 2019 +0530 @@ -10,6 +10,7 @@ Setup ===== +#testcases abortcommand abortflag $ cat >> $HGRCPATH < [phases] > publish = False @@ -19,6 +20,13 @@ > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH +#if abortflag + $ cat >> $HGRCPATH < [alias] + > abort = evolve --abort + > EOF +#endif + $ hg init abortrepo $ cd abortrepo $ echo ".*\.orig" > .hgignore @@ -41,9 +49,15 @@ Testing --abort when no evolve is interrupted ============================================= +#if abortflag $ hg evolve --abort abort: no interrupted evolve to abort [255] +#else + $ hg abort + abort: no operation in progress + [255] +#endif Testing with wrong combination of flags ======================================= @@ -103,8 +117,13 @@ instability: orphan summary: added d +#if abortcommand +when in dry-run mode + $ hg abort --dry-run + evolve in progress, will be aborted +#endif - $ hg evolve --abort + $ hg abort evolve aborted working directory is now at e93a9161a274 @@ -199,7 +218,7 @@ o 0:8fa14d15e168 added hgignore () draft - $ hg evolve --abort + $ hg abort 1 new orphan changesets evolve aborted working directory is now at 125af0ed8cae @@ -299,7 +318,7 @@ o 0:8fa14d15e168 added hgignore () draft - $ hg evolve --abort + $ hg abort 2 new orphan changesets evolve aborted working directory is now at 807e8e2ca559 @@ -395,7 +414,7 @@ adding file changes added 1 changesets with 1 changes to 1 files $ cd ../repotwo - $ hg evolve --abort + $ hg abort warning: new changesets detected on destination branch abort: unable to abort interrupted evolve, use 'hg evolve --stop' to stop evolve [255] @@ -442,7 +461,7 @@ $ hg phase -r 1c476940790a --public - $ hg evolve --abort + $ hg abort cannot clean up public changesets: 1c476940790a abort: unable to abort interrupted evolve, use 'hg evolve --stop' to stop evolve [255] @@ -510,7 +529,7 @@ o 0:8fa14d15e168 added hgignore () draft - $ hg evolve --abort + $ hg abort 1 new orphan changesets evolve aborted working directory is now at a0086c17bfc7 @@ -543,7 +562,7 @@ (see 'hg help evolve.interrupted') [1] - $ hg evolve --abort + $ hg abort evolve aborted working directory is now at c1f4718020e3 diff -r 8c780c3eb116 -r 2e14a9386316 tests/test-evolve-abort-phasediv.t --- a/tests/test-evolve-abort-phasediv.t Fri Jul 12 23:43:25 2019 +0530 +++ b/tests/test-evolve-abort-phasediv.t Thu Jul 11 22:56:46 2019 +0530 @@ -10,6 +10,7 @@ Setup ===== +#testcases abortcommand abortflag $ cat >> $HGRCPATH < [phases] > publish = False @@ -19,6 +20,13 @@ > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH +#if abortflag + $ cat >> $HGRCPATH < [alias] + > abort = evolve --abort + > EOF +#endif + $ hg init abortrepo $ cd abortrepo $ echo ".*\.orig" > .hgignore @@ -124,7 +132,7 @@ summary: added d - $ hg evolve --abort + $ hg abort evolve aborted working directory is now at ddba58020bc0 @@ -218,7 +226,7 @@ (see 'hg help evolve.interrupted') [1] - $ hg evolve --abort + $ hg abort 1 new phase-divergent changesets evolve aborted working directory is now at 28cd06b3f801 @@ -304,7 +312,7 @@ (see 'hg help evolve.interrupted') [1] - $ hg evolve --abort + $ hg abort 1 new phase-divergent changesets evolve aborted working directory is now at ef9b72b9b42c