--- a/CHANGELOG Sat Mar 02 02:34:29 2019 +0530
+++ b/CHANGELOG Mon Mar 04 12:30:15 2019 +0100
@@ -1,13 +1,19 @@
Changelog
=========
-8.4.0 - in progress
+8.5.0 - in progress
-------------------
* evolve: improved support for content-divergence with public changesets
* stack: support ranges in revsets indexing
* pick: add the standard `--tool` option
+8.4.1 - in progress
+-------------------
+
+ * split: preserve phases (issue6048)
+ * evolve: fix an recoverable state (issue6053)
+
8.4.0 -- 2019-12-22
-------------------
--- a/hgext3rd/evolve/evolvecmd.py Sat Mar 02 02:34:29 2019 +0530
+++ b/hgext3rd/evolve/evolvecmd.py Mon Mar 04 12:30:15 2019 +0100
@@ -1566,12 +1566,13 @@
return
targetcat = 'orphan'
+ has_some_opts = bool(revopt or anyopt or allopt or contopt or stopopt or abortopt)
if 1 < len(specifiedcategories):
msg = _('cannot specify more than one trouble category to solve (yet)')
raise error.Abort(msg)
elif len(specifiedcategories) == 1:
targetcat = specifiedcategories[0]
- elif repo['.'].obsolete() and not(revopt or anyopt or allopt):
+ elif repo['.'].obsolete() and not has_some_opts:
# if no args and parent is obsolete, update to successors
return solveobswdp(ui, repo, opts)
--- a/tests/test-evolve-content-divergence.t Sat Mar 02 02:34:29 2019 +0530
+++ b/tests/test-evolve-content-divergence.t Mon Mar 04 12:30:15 2019 +0100
@@ -927,3 +927,102 @@
| () [default] draft
o 0:8fa14d15e168 added hgignore
() [default] draft
+
+
+Test to make sure that evolve don't fall into unrecoverable state (issue6053):
+------------------------------------------------------------------------------
+ $ cd ..
+ $ hg init localside
+ $ cd localside
+ $ for ch in a b c d e; do
+ > echo $ch > $ch;
+ > hg add $ch;
+ > hg ci -m "added "$ch;
+ > done;
+
+ $ hg glog
+ @ 4:8d71eadcc9df added e
+ | () [default] draft
+ o 3:9150fe93bec6 added d
+ | () [default] draft
+ o 2:155349b645be added c
+ | () [default] draft
+ o 1:5f6d8a4bf34a added b
+ | () [default] draft
+ o 0:9092f1db7931 added a
+ () [default] draft
+
+ $ echo ee > e
+ $ hg amend -m "updated e"
+
+ $ hg up 1 -q
+ $ echo dd > d
+ $ echo ee > e
+ $ hg add d e
+ $ hg ci -m "updated e"
+ created new head
+
+ $ hg prune 4 -s . --hidden
+ 1 changesets pruned
+ 2 new content-divergent changesets
+
+ $ hg prune 3
+ 1 changesets pruned
+ 1 new orphan changesets
+
+ $ hg glog
+ @ 6:de4ea3103326 updated e
+ | () [default] draft
+ | * 5:ff6f7cd76a7c updated e
+ | | () [default] draft
+ | x 3:9150fe93bec6 added d
+ | | () [default] draft
+ | o 2:155349b645be added c
+ |/ () [default] draft
+ o 1:5f6d8a4bf34a added b
+ | () [default] draft
+ o 0:9092f1db7931 added a
+ () [default] draft
+
+ $ hg evolve --content-divergent --any
+ merge:[5] updated e
+ with: [6] updated e
+ base: [4] added e
+ rebasing "other" content-divergent changeset de4ea3103326 on 9150fe93bec6
+ merging d
+ warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+ fix conflicts and see `hg help evolve.interrupted`
+ [1]
+
+ $ hg diff
+ diff -r 9150fe93bec6 d
+ --- a/d Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,5 @@
+ +<<<<<<< destination: 9150fe93bec6 - test: added d
+ d
+ +=======
+ +dd
+ +>>>>>>> evolving: de4ea3103326 - test: updated e
+ diff -r 9150fe93bec6 e
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/e Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +ee
+
+ $ echo dresolved > d
+ $ hg res -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 6:de4ea3103326 "updated e"
+ updating to "local" side of the conflict: ff6f7cd76a7c
+ merging "other" content-divergent changeset 'e504bd82de7e'
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ working directory is now at 83b1664a580f
+
+ $ hg glog -l1
+ @ 8:83b1664a580f updated e
+ | () [default] draft
+ ~