branching: merge with stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 04 Mar 2019 12:30:15 +0100
changeset 4422 62a6f8f4e694
parent 4418 0ec30a7d9e12 (current diff)
parent 4421 a56caab87e37 (diff)
child 4428 fe37721aa0d9
branching: merge with stable
CHANGELOG
hgext3rd/evolve/evolvecmd.py
tests/test-evolve-content-divergence.t
--- 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
+  ~