D6607: merge: disallow merge abort in case of an unfinished operation(issue6160)
taapas1128 (Taapas Agrawal)
phabricator at mercurial-scm.org
Mon Jul 8 15:47:29 UTC 2019
taapas1128 updated this revision to Diff 15793.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6607?vs=15776&id=15793
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6607/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6607
AFFECTED FILES
mercurial/commands.py
tests/test-shelve2.t
CHANGE DETAILS
diff --git a/tests/test-shelve2.t b/tests/test-shelve2.t
--- a/tests/test-shelve2.t
+++ b/tests/test-shelve2.t
@@ -847,3 +847,38 @@
#endif
$ cd ..
+
+Block merge abort when unshelve in progress(issue6160)
+------------------------------------------------------
+
+ $ hg init a
+ $ cd a
+ $ echo foo > a ; hg commit -qAm "initial commit"
+ $ echo bar > a
+ $ hg shelve
+ shelved as default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo foobar > a
+ $ hg unshelve
+ unshelving change 'default'
+ temporarily committing pending changes (restore with 'hg unshelve --abort')
+ rebasing shelved changes
+ merging a
+ warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
+ unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
+ [1]
+
+ $ hg log --template '{desc|firstline} {author} {date|isodate} \n' -r .
+ pending changes temporary commit shelve at localhost 1970-01-01 00:00 +0000
+ $ hg merge --abort
+ abort: cannot abort merge with unshelve in progress
+ (use 'hg unshelve --continue' or 'hg unshelve --abort')
+ [255]
+
+ $ hg unshelve --abort
+ unshelve of 'default' aborted
+
+ $ hg log -G --template '{desc|firstline} {author} {date|isodate} \n' -r .
+ @ initial commit test 1970-01-01 00:00 +0000
+
+ $ cd ..
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4016,6 +4016,10 @@
if abort and repo.dirstate.p2() == nullid:
cmdutil.wrongtooltocontinue(repo, _('merge'))
if abort:
+ for state in statemod._unfinishedstates:
+ if state.isunfinished(repo) and state._opname != 'merge':
+ raise error.Abort(_('cannot abort merge with %s in progress') %
+ (state._opname), hint=state.hint())
if node:
raise error.Abort(_("cannot specify a node with --abort"))
if opts.get('rev'):
To: taapas1128, #hg-reviewers
Cc: pulkit, mercurial-devel
More information about the Mercurial-devel
mailing list