--- a/CHANGELOG Fri Dec 21 20:14:21 2018 +0100
+++ b/CHANGELOG Mon Dec 24 17:47:29 2018 +0100
@@ -4,6 +4,7 @@
8.3.3 - in progress
-------------------
+ * evolve: properly detect unresolved merge conflict (issue-5966)
* evolve: fix possible crash when the repo changes during evolve (issue-6028)
* test: avoid leaking `hg serve` process
* topic: fix error message for the `ngtip` revset
--- a/hgext3rd/evolve/evolvecmd.py Fri Dec 21 20:14:21 2018 +0100
+++ b/hgext3rd/evolve/evolvecmd.py Mon Dec 24 17:47:29 2018 +0100
@@ -21,6 +21,7 @@
hg,
lock as lockmod,
merge,
+ mergeutil,
node as nodemod,
obsolete,
obsutil,
@@ -1729,6 +1730,8 @@
"""logic for handling of `hg evolve --continue`"""
with repo.wlock(), repo.lock():
+ ms = merge.mergestate.read(repo)
+ mergeutil.checkunresolved(ms)
if (evolvestate['command'] == 'next'
or evolvestate['category'] == 'orphan'):
_completeorphan(ui, repo, evolvestate)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-issue5966.t Mon Dec 24 17:47:29 2018 +0100
@@ -0,0 +1,115 @@
+Testing evolve --continue with unresolved conflicts (issue5966)
+https://bz.mercurial-scm.org/show_bug.cgi?id=5966
+
+ $ . $TESTDIR/testlib/common.sh
+
+ $ hg init issue5966
+ $ cd issue5966
+ $ cat > .hg/hgrc << EOF
+ > [phases]
+ > publish = false
+ > [alias]
+ > glog = log -GT "{rev}: {desc}"
+ > [extensions]
+ > evolve=
+ > EOF
+
+ $ touch a
+ $ hg ci -Aqm 'empty'
+
+ $ echo apple > a
+ $ hg ci -m 'apple'
+ $ echo banana > a
+ $ hg ci -m 'banana'
+ $ echo coconut > a
+ $ hg ci -m 'coconut'
+
+ $ hg glog
+ @ 3: coconut
+ |
+ o 2: banana
+ |
+ o 1: apple
+ |
+ o 0: empty
+
+
+ $ hg up -q 1
+
+Amending revision 1 in a way that causes conflicts
+
+ $ echo apricot > a
+ $ hg amend -m 'apricot'
+ 2 new orphan changesets
+
+ $ hg glog --hidden
+ @ 4: apricot
+ |
+ | * 3: coconut
+ | |
+ | * 2: banana
+ | |
+ | x 1: apple
+ |/
+ o 0: empty
+
+
+ $ hg evolve -t :fail
+ move:[2] banana
+ atop:[4] apricot
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+ $ hg evolve --list
+ 34a690fcf6ab: banana
+ orphan: 7f59f18ca4a9 (obsolete parent)
+
+ feb8c0bffa1f: coconut
+ orphan: 34a690fcf6ab (orphan parent)
+
+Evolve should detect unresolved conflict.
+
+ $ hg resolve --list
+ U a
+ $ hg evolve --continue
+ abort: unresolved merge conflicts (see 'hg help resolve')
+ [255]
+
+(even when ran twice)
+
+ $ hg evolve --continue
+ abort: unresolved merge conflicts (see 'hg help resolve')
+ [255]
+
+ $ cat a
+ apricot
+ $ hg resolve --list
+ U a
+ $ hg resolve a -t :other
+ (no more unresolved files)
+ continue: hg evolve --continue
+ $ hg resolve --list
+ R a
+ $ hg evolve --continue
+ evolving 2:34a690fcf6ab "banana"
+ working directory is now at e4207a610ed0
+ $ hg resolve --list
+
+evolve the rest of the stack
+
+ $ hg evolve
+ move:[3] coconut
+ atop:[5] banana
+ merging a
+ working directory is now at d77b4639fe26
+
+All commit evolved
+
+ $ hg glog
+ @ 6: coconut
+ |
+ o 5: banana
+ |
+ o 4: apricot
+ |
+ o 0: empty
+
--- a/tests/test-stabilize-result.t Fri Dec 21 20:14:21 2018 +0100
+++ b/tests/test-stabilize-result.t Mon Dec 24 17:47:29 2018 +0100
@@ -93,7 +93,6 @@
+a
+newer a
$ hg evolve --continue
- evolving 4:3655f0f50885 "newer a"
abort: unresolved merge conflicts (see 'hg help resolve')
[255]
$ hg resolve -m a