changeset 4530:d081cc4f5fef

tests: consolidate the public-content-divergent test cases This commit move the public-content-divergent tests in dedicated test files.
author Sushil khanchi <sushilkhanchi97@gmail.com>
date Wed, 17 Apr 2019 00:20:44 +0530
parents e0eaa33a1f8a
children 8b3781d9a616
files tests/test-evolve-public-content-divergent-corner-cases.t tests/test-evolve-public-content-divergent-main.t tests/test-evolve-public-content-divergent-mergingleadstopublic.t tests/test-evolve-public-content-divergent.t
diffstat 4 files changed, 2047 insertions(+), 2017 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-corner-cases.t	Wed Apr 17 00:20:44 2019 +0530
@@ -0,0 +1,770 @@
+===============================================================
+Tests the resolution of public content divergence: corner cases
+===============================================================
+
+This file intend to cover cases that are specific enough to not fit in the
+other cases.
+
+Setup
+=====
+  $ cat >> $HGRCPATH <<EOF
+  > [alias]
+  > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
+  > [phases]
+  > publish = False
+  > [extensions]
+  > rebase =
+  > EOF
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when divergence is not created by actual diff change, but because of rebasing:
+--------------------------------------------------------------------------------------
+
+Prepare the repo:
+
+  $ hg init rebasediv
+  $ cd rebasediv
+  $ for ch in a b c; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+
+  $ hg glog
+  @  2:155349b645be added c
+  |   draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
+
+  $ hg up .^ -q
+  $ echo d > d
+  $ hg ci -Am "added d"
+  adding d
+  created new head
+
+  $ hg rebase -r 2 -d .
+  rebasing 2:155349b645be "added c"
+
+  $ hg glog
+  o  4:c0d7ee6604ea added c
+  |   draft
+  |
+  @  3:c9241b0f2d5b added d
+  |   draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
+  $ hg up 2 --hidden -q
+  updated to hidden changeset 155349b645be
+  (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
+  working directory parent is obsolete! (155349b645be)
+
+  $ echo cc >> c
+  $ hg ci --amend -m "updated c"
+  2 new content-divergent changesets
+
+Lets change the phase to --public of branch which is pulled from server:
+  $ hg phase --public -r 4
+  $ hg glog -p
+  @  5:f5f9b4fc8b77 updated c
+  |   draft content-divergent
+  |
+  |  diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,2 @@
+  |  +c
+  |  +cc
+  |
+  | o  4:c0d7ee6604ea added c
+  | |   public
+  | |
+  | |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
+  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  | |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  | |  @@ -0,0 +1,1 @@
+  | |  +c
+  | |
+  | o  3:c9241b0f2d5b added d
+  |/    public
+  |
+  |    diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +d
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +b
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+     diff -r 000000000000 -r 9092f1db7931 a
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +a
+  
+
+Evolve:
+  $ hg evolve --content-divergent
+  merge:[4] added c
+  with: [5] updated c
+  base: [2] added c
+  rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
+  updating to "local" side of the conflict: c0d7ee6604ea
+  merging "other" content-divergent changeset 'c3d442d80993'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  committed as 3b336cbee992
+  working directory is now at 3b336cbee992
+
+  $ hg glog -p
+  @  8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
+  |   draft
+  |
+  |  diff -r c0d7ee6604ea -r 3b336cbee992 c
+  |  --- a/c	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -1,1 +1,2 @@
+  |   c
+  |  +cc
+  |
+  o  4:c0d7ee6604ea added c
+  |   public
+  |
+  |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c
+  |
+  o  3:c9241b0f2d5b added d
+  |   public
+  |
+  |  diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +d
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +b
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+     diff -r 000000000000 -r 9092f1db7931 a
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +a
+  
+Check that we don't have any unstable cset now:
+  $ hg evolve -l
+  $ cd ..
+
+Different parent, simple conflict on relocate, deleted file on actual merge
+---------------------------------------------------------------------------
+
+Changeset "added c e" is also removing 'd'. This should conflict with the update
+to 'd' in the successors of 'adding d' when solving the content divergence.
+
+  $ hg init pubdiv-parent-deleted-file
+  $ cd pubdiv-parent-deleted-file
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+
+  $ hg up 'desc("added b")'
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo cfoo > c
+  $ echo e > e
+  $ hg add c e
+  $ hg ci -m "added c e"
+  created new head
+
+  $ hg up 'desc("re:added c$")'
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dd > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog --patch --rev 'sort(all(), "topo")'
+  @  5:93cd84bbdaca added d
+  |   draft
+  |
+  |  diff -r 155349b645be -r 93cd84bbdaca d
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +dd
+  |
+  | o  3:9150fe93bec6 added d
+  |/    draft
+  |
+  |    diff -r 155349b645be -r 9150fe93bec6 d
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +d
+  |
+  o  2:155349b645be added c
+  |   draft
+  |
+  |  diff -r 5f6d8a4bf34a -r 155349b645be c
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c
+  |
+  | o  4:e568fd1029bb added c e
+  |/    draft
+  |
+  |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +cfoo
+  |    diff -r 5f6d8a4bf34a -r e568fd1029bb 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 @@
+  |    +e
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +b
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+     diff -r 000000000000 -r 9092f1db7931 a
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +a
+  
+  $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
+  1 changesets pruned
+  $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+
+Change phase to public for one head:
+  $ hg phase --public -r 'max(desc("added d"))'
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   public
+  |
+  | *  4:e568fd1029bb added c e
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+
+  $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
+  @  5:93cd84bbdaca added d
+  |   public
+  |
+  |  diff -r 155349b645be -r 93cd84bbdaca d
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +dd
+  |
+  | x  3:9150fe93bec6 added d
+  |/    draft
+  |
+  |    diff -r 155349b645be -r 9150fe93bec6 d
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +d
+  |
+  o  2:155349b645be added c
+  |   public
+  |
+  |  diff -r 5f6d8a4bf34a -r 155349b645be c
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c
+  |
+  | *  4:e568fd1029bb added c e
+  |/    draft content-divergent
+  |
+  |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +cfoo
+  |    diff -r 5f6d8a4bf34a -r e568fd1029bb 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 @@
+  |    +e
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +b
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+     diff -r 000000000000 -r 9092f1db7931 a
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +a
+  
+
+  $ hg obslog --all --rev tip --patch
+  @  93cd84bbdaca (5) added d
+  |
+  | *  e568fd1029bb (4) added c e
+  |/
+  x  9150fe93bec6 (3) added d
+       rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 9150fe93bec6 -r 93cd84bbdaca d
+         --- a/d	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,1 +1,1 @@
+         -d
+         +dd
+  
+       rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+         (No patch available, changesets rebased)
+  
+
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added c e
+  base: [3] added d
+  rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ hg diff
+  diff -r 155349b645be c
+  --- a/c	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< destination: 155349b645be - test: added c
+   c
+  +=======
+  +cfoo
+  +>>>>>>> evolving:    e568fd1029bb - test: added c e
+  diff -r 155349b645be 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 @@
+  +e
+
+  $ echo c > c
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  evolving 4:e568fd1029bb "added c e"
+  updating to "local" side of the conflict: 93cd84bbdaca
+  merging "other" content-divergent changeset '2af3359250d3'
+  file 'd' was deleted in other but was modified in local.
+  What do you want to do?
+  use (c)hanged version, (d)elete, or leave (u)nresolved? u
+  1 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ hg sum
+  parent: 5:93cd84bbdaca 
+   added d
+  parent: 6:2af3359250d3 tip (content-divergent)
+   added c e
+  branch: default
+  commit: 1 modified, 1 unknown, 1 unresolved (merge)
+  update: (current)
+  phases: 1 draft
+  content-divergent: 1 changesets
+  evolve: (evolve --continue)
+
+  $ echo resolved > d
+  $ hg resolve -m d
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  committed as bc1f4610744c
+  working directory is now at bc1f4610744c
+
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
+  # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
+  phase-divergent update to 93cd84bbdaca:
+  
+  added c e
+  
+  diff -r 93cd84bbdaca -r bc1f4610744c d
+  --- a/d	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,1 @@
+  -dd
+  +resolved
+  diff -r 93cd84bbdaca -r bc1f4610744c 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 @@
+  +e
+
+  $ hg evolve -l
+  $ cd ..
+
+Test a pratical "rebase" case
+=============================
+
+Initial setup
+
+  $ hg init rebase-divergence
+  $ cd rebase-divergence
+  $ echo root >> root
+  $ hg add root
+  $ hg commit -m root
+  $ for x in c_A c_B c_C c_D; do
+  >     echo $x >> $x
+  >     hg add $x
+  >     hg commit -m $x
+  > done
+
+  $ hg up 'desc("c_A")'
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+
+  $ for x in c_E c_F; do
+  >     echo $x >> $x
+  >     hg add $x
+  >     hg commit -m $x
+  > done
+  created new head
+
+(creating divergence locally for simplicity)
+
+  $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
+  $ hg rebase -s $node -d 'desc("c_B")'
+  rebasing 5:4ab2719bbab9 "c_E"
+  rebasing 6:77ccbf8d837e "c_F" (tip)
+  $ hg phase --public tip
+  $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
+  rebasing 5:4ab2719bbab9 "c_E"
+  rebasing 6:77ccbf8d837e "c_F"
+  2 new content-divergent changesets
+
+  $ hg sum
+  parent: 8:a52ac76b45f5 
+   c_F
+  branch: default
+  commit: (clean)
+  update: 4 new changesets, 3 branch heads (merge)
+  phases: 4 draft
+  content-divergent: 2 changesets
+  $ hg evolve --list
+  b4a584aea4bd: c_E
+    content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
+  
+  8ae8db670b4a: c_F
+    content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
+  
+  $ hg log -G --patch
+  *  changeset:   10:8ae8db670b4a
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  instability: content-divergent
+  |  summary:     c_F
+  |
+  |  diff -r b4a584aea4bd -r 8ae8db670b4a c_F
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_F
+  |
+  *  changeset:   9:b4a584aea4bd
+  |  parent:      3:abb77b893f28
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  instability: content-divergent
+  |  summary:     c_E
+  |
+  |  diff -r abb77b893f28 -r b4a584aea4bd c_E
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_E
+  |
+  | @  changeset:   8:a52ac76b45f5
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_F
+  | |
+  | |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  | |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
+  | |  @@ -0,0 +1,1 @@
+  | |  +c_F
+  | |
+  | o  changeset:   7:c7d2d47c7240
+  | |  parent:      2:eb1b4e1205b8
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_E
+  | |
+  | |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
+  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  | |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
+  | |  @@ -0,0 +1,1 @@
+  | |  +c_E
+  | |
+  +---o  changeset:   4:dbb960d6c97c
+  | |    user:        test
+  | |    date:        Thu Jan 01 00:00:00 1970 +0000
+  | |    summary:     c_D
+  | |
+  | |    diff -r abb77b893f28 -r dbb960d6c97c c_D
+  | |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  | |    +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
+  | |    @@ -0,0 +1,1 @@
+  | |    +c_D
+  | |
+  o |  changeset:   3:abb77b893f28
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     c_C
+  |
+  |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +c_C
+  |
+  o  changeset:   2:eb1b4e1205b8
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_B
+  |
+  |  diff -r e31751786014 -r eb1b4e1205b8 c_B
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_B
+  |
+  o  changeset:   1:e31751786014
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_A
+  |
+  |  diff -r 1e4be0697311 -r e31751786014 c_A
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_A
+  |
+  o  changeset:   0:1e4be0697311
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     root
+  
+     diff -r 000000000000 -r 1e4be0697311 root
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/root	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +root
+  
+
+Run automatic evolution
+
+  $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
+  merge:[7] c_E
+  with: [9] c_E
+  base: [5] c_E
+  rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
+  updating to "local" side of the conflict: c7d2d47c7240
+  merging "other" content-divergent changeset '0773642cfa95'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  1 new orphan changesets
+  merge:[8] c_F
+  with: [10] c_F
+  base: [6] c_F
+  rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
+  updating to "local" side of the conflict: a52ac76b45f5
+  merging "other" content-divergent changeset '6a87ed4aa317'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg sum
+  parent: 8:a52ac76b45f5 tip
+   c_F
+  branch: default
+  commit: (clean)
+  update: 2 new changesets, 2 branch heads (merge)
+  phases: 2 draft
+
+  $ hg evolve --list
+
+  $ hg log -G --patch
+  @  changeset:   8:a52ac76b45f5
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_F
+  |
+  |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_F
+  |
+  o  changeset:   7:c7d2d47c7240
+  |  parent:      2:eb1b4e1205b8
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_E
+  |
+  |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_E
+  |
+  | o  changeset:   4:dbb960d6c97c
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_D
+  | |
+  | |  diff -r abb77b893f28 -r dbb960d6c97c c_D
+  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  | |  +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
+  | |  @@ -0,0 +1,1 @@
+  | |  +c_D
+  | |
+  | o  changeset:   3:abb77b893f28
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     c_C
+  |
+  |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
+  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
+  |    @@ -0,0 +1,1 @@
+  |    +c_C
+  |
+  o  changeset:   2:eb1b4e1205b8
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_B
+  |
+  |  diff -r e31751786014 -r eb1b4e1205b8 c_B
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_B
+  |
+  o  changeset:   1:e31751786014
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c_A
+  |
+  |  diff -r 1e4be0697311 -r e31751786014 c_A
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,1 @@
+  |  +c_A
+  |
+  o  changeset:   0:1e4be0697311
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     root
+  
+     diff -r 000000000000 -r 1e4be0697311 root
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/root	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +root
+  
+  $ hg export tip
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
+  # Parent  c7d2d47c7240562be5cbd1a24080dd0396178709
+  c_F
+  
+  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +c_F
+
+  $ hg obslog --rev a52ac76b45f5
+  @    a52ac76b45f5 (8) c_F
+  |\
+  x |  6a87ed4aa317 (12) c_F
+  | |    rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |
+  x |  8ae8db670b4a (10) c_F
+  |/     rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+  |
+  x  77ccbf8d837e (6) c_F
+       rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
+  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-main.t	Wed Apr 17 00:20:44 2019 +0530
@@ -0,0 +1,640 @@
+=============================================================
+Tests the resolution of public content divergence: main cases
+=============================================================
+
+This file intend to cover all the common cases of public content divergence.
+That is all the variant of:
+parent: same/different
+relocation: [no-]conflict
+merging: [no-]conflict
+
+Setup
+=====
+  $ cat >> $HGRCPATH <<EOF
+  > [alias]
+  > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
+  > [phases]
+  > publish = False
+  > [extensions]
+  > rebase =
+  > EOF
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when same parent, no conflict:
+--------------------------------------
+
+Prepare the repository:
+
+  $ hg init pubdiv1
+  $ cd pubdiv1
+  $ for ch in a b; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+  $ hg glog
+  @  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+Make an amend and change phase to public:
+
+  $ sed -i "1 i I am first" b
+  $ hg amend
+  $ hg phase --public
+
+Amend again to create a cset divergent to public one:
+
+  $ hg up 1 --hidden -q
+  updated to hidden changeset 5f6d8a4bf34a
+  (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f)
+  working directory parent is obsolete! (5f6d8a4bf34a)
+
+  $ echo "I am second" >> b
+  $ hg ci --amend -m "updated b"
+  1 new content-divergent changesets
+
+  $ hg glog
+  @  3:dcdaf152280a updated b
+  |   draft content-divergent
+  |
+  | o  2:44f360db368f added b
+  |/    public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+
+Lets resolve the public content-divergence:
+
+  $ hg evolve --content-divergent
+  merge:[2] added b
+  with: [3] updated b
+  base: [1] added b
+  updating to "local" side of the conflict: 44f360db368f
+  merging "other" content-divergent changeset 'dcdaf152280a'
+  merging b
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  committed as c1aa9cfb6cf8
+  working directory is now at c1aa9cfb6cf8
+
+Following graph log shows that it correctly merged the two divergent csets:
+
+  $ hg glog -p
+  @  5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f:
+  |   draft
+  |
+  |  diff -r 44f360db368f -r c1aa9cfb6cf8 b
+  |  --- a/b	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -1,2 +1,3 @@
+  |   I am first
+  |   b
+  |  +I am second
+  |
+  o  2:44f360db368f added b
+  |   public
+  |
+  |  diff -r 9092f1db7931 -r 44f360db368f b
+  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -0,0 +1,2 @@
+  |  +I am first
+  |  +b
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+     diff -r 000000000000 -r 9092f1db7931 a
+     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+     @@ -0,0 +1,1 @@
+     +a
+  
+  $ hg evolve -l
+  $ cd ..
+
+Testing when same parent, merging conflict:
+-------------------------------------------
+
+Prepare the repository:
+
+  $ hg init pubdiv2
+  $ cd pubdiv2
+  $ for ch in a b; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+  $ hg glog
+  @  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+Make an amend and change phase to public:
+
+  $ echo "I am foo" > b
+  $ hg amend
+  $ hg phase --public
+
+Amend again to create a cset divergent to public one:
+
+  $ hg up 1 --hidden -q
+  updated to hidden changeset 5f6d8a4bf34a
+  (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c)
+  working directory parent is obsolete! (5f6d8a4bf34a)
+
+  $ echo "I am bar" > b
+  $ hg ci --amend -m "updated b"
+  1 new content-divergent changesets
+
+  $ hg glog
+  @  3:0e805383168e updated b
+  |   draft content-divergent
+  |
+  | o  2:580f2d01e52c added b
+  |/    public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+
+Lets resolve the divergence:
+
+  $ hg evolve --content-divergent
+  merge:[2] added b
+  with: [3] updated b
+  base: [1] added b
+  updating to "local" side of the conflict: 580f2d01e52c
+  merging "other" content-divergent changeset '0e805383168e'
+  merging b
+  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo "I am foobar" > b
+  $ hg resolve -m --tool union
+  (no more unresolved files)
+  continue: hg evolve --continue
+  $ hg evolve --continue
+  committed as 1a739394e9d4
+  working directory is now at 1a739394e9d4
+
+  $ hg glog
+  @  5:1a739394e9d4 phase-divergent update to 580f2d01e52c:
+  |   draft
+  |
+  o  2:580f2d01e52c added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+Testing when different parent, no conflict:
+-------------------------------------------
+
+  $ hg init pubdiv3
+  $ cd pubdiv3
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+
+  $ hg up .^
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dd > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg up 1
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dd > d
+  $ echo e > e
+  $ hg add d e
+  $ hg ci -m "added d e"
+  created new head
+
+  $ hg glog
+  @  5:4291d72ee19a added d e
+  |   draft
+  |
+  | o  4:93cd84bbdaca added d
+  | |   draft
+  | |
+  | | o  3:9150fe93bec6 added d
+  | |/    draft
+  | |
+  | o  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 3 -s 5
+  1 changesets pruned
+  $ hg prune 3 -s 4 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+
+Change phase to public for one head:
+  $ hg phase -r 4 --public
+
+  $ hg glog
+  @  5:4291d72ee19a added d e
+  |   draft content-divergent
+  |
+  | o  4:93cd84bbdaca added d
+  | |   public
+  | |
+  | o  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+
+  $ hg evolve --content-divergent --any
+  merge:[4] added d
+  with: [5] added d e
+  base: [3] added d
+  rebasing "other" content-divergent changeset 4291d72ee19a on 155349b645be
+  updating to "local" side of the conflict: 93cd84bbdaca
+  merging "other" content-divergent changeset 'f88581407163'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  committed as 4cbe48a0c3d9
+  working directory is now at 4cbe48a0c3d9
+
+  $ hg glog -l 1
+  @  8:4cbe48a0c3d9 phase-divergent update to 93cd84bbdaca:
+  |   draft
+  ~
+
+  $ hg evolve -l
+  $ cd ..
+
+Testing when different parents, relocation conflict:
+----------------------------------------------------
+
+  $ hg init pubdiv4
+  $ cd pubdiv4
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+
+  $ hg up .^^
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo d > d
+  $ echo cfoo > c
+  $ echo e > e
+  $ hg add d c e
+  $ hg ci -m "added d c e"
+  created new head
+
+  $ hg up 'desc("added c")'
+  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dd > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   draft
+  |
+  | o  4:f31bcc378766 added d c e
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+  $ hg prune 'min(desc("re:added d$"))' -s 'max(desc("re:added d$"))'
+  1 changesets pruned
+  $ hg prune 'min(desc("re:added d$"))' -s 'desc("added d c e")' --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+
+Change phase to public for one head:
+  $ hg phase --public -r 'max(desc("re:added d$"))'
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   public
+  |
+  | *  4:f31bcc378766 added d c e
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added d c e
+  base: [3] added d
+  rebasing "other" content-divergent changeset f31bcc378766 on 155349b645be
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ hg diff
+  diff -r 155349b645be c
+  --- a/c	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< destination: 155349b645be - test: added c
+   c
+  +=======
+  +cfoo
+  +>>>>>>> evolving:    f31bcc378766 - test: added d c e
+  diff -r 155349b645be d
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +d
+  diff -r 155349b645be 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 @@
+  +e
+
+  $ echo c > c
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  evolving 4:f31bcc378766 "added d c e"
+  updating to "local" side of the conflict: 93cd84bbdaca
+  merging "other" content-divergent changeset 'bd28d3e4a228'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  committed as 412dde898967
+  working directory is now at 412dde898967
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 412dde898967b50e7d334aefff778a9af46d29d1
+  # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
+  phase-divergent update to 93cd84bbdaca:
+  
+  added d c e
+  
+  diff -r 93cd84bbdaca -r 412dde898967 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 @@
+  +e
+
+  $ hg evolve -l
+  $ cd ..
+
+Testing when merging conflicts, relocation don't:
+-------------------------------------------------
+
+  $ hg init pubdiv5
+  $ cd pubdiv5
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+
+  $ hg up .^^
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dconflict > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dd > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   draft
+  |
+  | o  4:9411ad1fe615 added d
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+  $ hg prune 3 -s 5
+  1 changesets pruned
+  $ hg prune 3 -s 4 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+
+Change phase to public for one head:
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   public
+  |
+  | *  4:9411ad1fe615 added d
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added d
+  base: [3] added d
+  rebasing "other" content-divergent changeset 9411ad1fe615 on 155349b645be
+  updating to "local" side of the conflict: 93cd84bbdaca
+  merging "other" content-divergent changeset 'b5c690cdf1d5'
+  merging d
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo d > d
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  committed as 2a0f44767904
+  working directory is now at 2a0f44767904
+
+  $ hg evolve -l
+  $ cd ..
+
+Testing when relocation, merging both conflict:
+-----------------------------------------------
+
+  $ hg init pubdiv6
+  $ cd pubdiv6
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Aqm "added "$ch;
+  > done;
+
+  $ hg up .^^
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo cfoo > c
+  $ echo e > e
+  $ echo dconflict > d
+  $ hg add c e d
+  $ hg ci -m "added c e"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dd > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   draft
+  |
+  | o  4:3c17c7afaf6e added c e
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+  $ hg prune 3 -s 5
+  1 changesets pruned
+  $ hg prune 3 -s 4 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+
+Change phase to public for one head:
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:93cd84bbdaca added d
+  |   public
+  |
+  | *  4:3c17c7afaf6e added c e
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added c e
+  base: [3] added d
+  rebasing "other" content-divergent changeset 3c17c7afaf6e on 155349b645be
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ hg diff
+  diff -r 155349b645be c
+  --- a/c	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< destination: 155349b645be - test: added c
+   c
+  +=======
+  +cfoo
+  +>>>>>>> evolving:    3c17c7afaf6e - test: added c e
+  diff -r 155349b645be d
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +dconflict
+  diff -r 155349b645be 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 @@
+  +e
+
+  $ echo cfoo > c
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  evolving 4:3c17c7afaf6e "added c e"
+  updating to "local" side of the conflict: 93cd84bbdaca
+  merging "other" content-divergent changeset 'c4ce3d34e784'
+  merging d
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  2 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo d > d
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  committed as b9082a9e66ce
+  working directory is now at b9082a9e66ce
+
+  $ hg evolve -l
+  $ cd ..
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-public-content-divergent-mergingleadstopublic.t	Wed Apr 17 00:20:44 2019 +0530
@@ -0,0 +1,637 @@
+===============================================================================
+Tests the resolution of public content divergence: when merging leads to public
+===============================================================================
+
+This file intend to cover all the cases possible when merging the other
+divergent cset into public cset leads to public cset itself.
+Possible variants are:
+
+parent: same/different
+relocation: [no-]conflict
+merging: [no-]conflict
+
+Setup
+=====
+  $ cat >> $HGRCPATH <<EOF
+  > [alias]
+  > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
+  > [phases]
+  > publish = False
+  > [extensions]
+  > rebase =
+  > EOF
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Testing when same parent, no conflict:
+--------------------------------------
+
+  $ hg init pubdiv1
+  $ cd pubdiv1
+  $ for ch in a b c; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+
+  $ hg up .^
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo ch > ch
+  $ hg add ch
+  $ hg ci -m "added ch"
+  created new head
+
+  $ hg up .^
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo ch > ch
+  $ hg add ch
+  $ hg ci -m "added c"
+  created new head
+
+  $ hg glog
+  @  4:f7c1071f1e7c added c
+  |   draft
+  |
+  | o  3:90522bccf499 added ch
+  |/    draft
+  |
+  | o  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 2 -s 3
+  1 changesets pruned
+  $ hg prune 2 -s 4 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 4
+
+  $ hg glog
+  @  4:f7c1071f1e7c added c
+  |   public
+  |
+  | *  3:90522bccf499 added ch
+  |/    draft content-divergent
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[4] added c
+  with: [3] added ch
+  base: [2] added c
+  merging "other" content-divergent changeset '90522bccf499'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  content-divergent changesets differ by descriptions only, discarding 90522bccf499
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   4:f7c1071f1e7c
+  tag:         tip
+  parent:      1:5f6d8a4bf34a
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added c
+  
+  $ cd ..
+
+Testing when different parent, no conflict:
+-------------------------------------------
+
+  $ hg init pubdiv2
+  $ cd pubdiv2
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+  adding d
+
+  $ hg up 1
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ hg add dh
+  $ hg ci -m "added dh"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ hg add dh
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   draft
+  |
+  | o  4:5acd58ef5066 added dh
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 3 -s 4
+  1 changesets pruned
+  $ hg prune 3 -s 5 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   public
+  |
+  | *  4:5acd58ef5066 added dh
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added dh
+  base: [3] added d
+  rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
+  updating to "local" side of the conflict: e800202333a4
+  merging "other" content-divergent changeset 'ae3429430ef1'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  content-divergent changesets differ by descriptions only, discarding ae3429430ef1
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   5:e800202333a4
+  tag:         tip
+  parent:      2:155349b645be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added d
+  
+  $ cd ..
+
+Testing when same parent, merging conflict:
+-------------------------------------------
+
+  $ hg init pubdiv3
+  $ cd pubdiv3
+  $ for ch in a b c; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+
+  $ hg up .^
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo chconflict > ch
+  $ hg add ch
+  $ hg ci -m "added ch"
+  created new head
+
+  $ hg up .^
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo ch > ch
+  $ hg add ch
+  $ hg ci -m "added c"
+  created new head
+
+  $ hg glog
+  @  4:f7c1071f1e7c added c
+  |   draft
+  |
+  | o  3:229da2719b19 added ch
+  |/    draft
+  |
+  | o  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 2 -s 3
+  1 changesets pruned
+  $ hg prune 2 -s 4 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 4
+
+  $ hg glog
+  @  4:f7c1071f1e7c added c
+  |   public
+  |
+  | *  3:229da2719b19 added ch
+  |/    draft content-divergent
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[4] added c
+  with: [3] added ch
+  base: [2] added c
+  merging "other" content-divergent changeset '229da2719b19'
+  merging ch
+  warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ hg diff
+  diff -r f7c1071f1e7c ch
+  --- a/ch	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/ch	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< local: f7c1071f1e7c - test: added c
+   ch
+  +=======
+  +chconflict
+  +>>>>>>> other: 229da2719b19 - test: added ch
+
+  $ echo ch > ch
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  content-divergent changesets differ by descriptions only, discarding 229da2719b19
+  working directory is now at f7c1071f1e7c
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   4:f7c1071f1e7c
+  tag:         tip
+  parent:      1:5f6d8a4bf34a
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added c
+  
+  $ cd ..
+
+Testing when different parent, relocation conflict:
+---------------------------------------------------
+
+  $ hg init pubdiv4
+  $ cd pubdiv4
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+  adding d
+
+  $ hg up 1
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ echo cc > c
+  $ hg add dh c
+  $ hg ci -m "added dh"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ hg add dh
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   draft
+  |
+  | o  4:f89a8e2f86ac added dh
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 3 -s 4
+  1 changesets pruned
+  $ hg prune 3 -s 5 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   public
+  |
+  | *  4:f89a8e2f86ac added dh
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added dh
+  base: [3] added d
+  rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo c > c
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  evolving 4:f89a8e2f86ac "added dh"
+  updating to "local" side of the conflict: e800202333a4
+  merging "other" content-divergent changeset 'bc309da55b88'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  content-divergent changesets differ by descriptions only, discarding bc309da55b88
+  working directory is now at e800202333a4
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   5:e800202333a4
+  tag:         tip
+  parent:      2:155349b645be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added d
+  
+  $ cd ..
+
+Testing when different parent, merging conflict:
+------------------------------------------------
+
+  $ hg init pubdiv5
+  $ cd pubdiv5
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+  adding d
+
+  $ hg up 1
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dhconflict > dh
+  $ hg add dh
+  $ hg ci -m "added dh"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ hg add dh
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   draft
+  |
+  | o  4:db0b7bba0aae added dh
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 3 -s 4
+  1 changesets pruned
+  $ hg prune 3 -s 5 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   public
+  |
+  | *  4:db0b7bba0aae added dh
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added dh
+  base: [3] added d
+  rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
+  updating to "local" side of the conflict: e800202333a4
+  merging "other" content-divergent changeset 'a5bbf2042450'
+  merging dh
+  warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo dh > dh
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  content-divergent changesets differ by descriptions only, discarding a5bbf2042450
+  working directory is now at e800202333a4
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   5:e800202333a4
+  tag:         tip
+  parent:      2:155349b645be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added d
+  
+  $ cd ..
+
+Testing when different parent, conflict in relocation and merging:
+------------------------------------------------------------------
+
+  $ hg init pubdiv6
+  $ cd pubdiv6
+  $ for ch in a b c d; do
+  >   echo $ch > $ch;
+  >   hg ci -Am "added "$ch;
+  > done;
+  adding a
+  adding b
+  adding c
+  adding d
+
+  $ hg up 1
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo dhconflict > dh
+  $ echo cc > c
+  $ hg add dh c
+  $ hg ci -m "added dh"
+  created new head
+
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo dh > dh
+  $ hg add dh
+  $ hg ci -m "added d"
+  created new head
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   draft
+  |
+  | o  4:67b19bbd770f added dh
+  | |   draft
+  | |
+  +---o  3:9150fe93bec6 added d
+  | |     draft
+  | |
+  o |  2:155349b645be added c
+  |/    draft
+  |
+  o  1:5f6d8a4bf34a added b
+  |   draft
+  |
+  o  0:9092f1db7931 added a
+      draft
+  
+
+  $ hg prune 3 -s 4
+  1 changesets pruned
+  $ hg prune 3 -s 5 --hidden
+  1 changesets pruned
+  2 new content-divergent changesets
+  $ hg phase --public -r 5
+
+  $ hg glog
+  @  5:e800202333a4 added d
+  |   public
+  |
+  | *  4:67b19bbd770f added dh
+  | |   draft content-divergent
+  | |
+  o |  2:155349b645be added c
+  |/    public
+  |
+  o  1:5f6d8a4bf34a added b
+  |   public
+  |
+  o  0:9092f1db7931 added a
+      public
+  
+  $ hg evolve --content-divergent --any
+  merge:[5] added d
+  with: [4] added dh
+  base: [3] added d
+  rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo c > c
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  evolving 4:67b19bbd770f "added dh"
+  updating to "local" side of the conflict: e800202333a4
+  merging "other" content-divergent changeset '09054d1f3c97'
+  merging dh
+  warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  fix conflicts and see `hg help evolve.interrupted`
+  [1]
+
+  $ echo dh > dh
+  $ hg res -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+
+  $ hg evolve --continue
+  content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
+  working directory is now at e800202333a4
+
+  $ hg evolve -l
+
+  $ hg par
+  changeset:   5:e800202333a4
+  tag:         tip
+  parent:      2:155349b645be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added d
+  
+  $ cd ..
--- a/tests/test-evolve-public-content-divergent.t	Wed Apr 17 12:31:17 2019 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2017 +0,0 @@
-Test for handling of content divergence with public cset using `hg evolve`
-==========================================================================
-
-Setup
-=====
-  $ cat >> $HGRCPATH <<EOF
-  > [alias]
-  > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n"
-  > [phases]
-  > publish = False
-  > [extensions]
-  > rebase =
-  > EOF
-  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
-
-Testing the case when both divergent cset are on the same parent and no-conflict in merging:
--------------------------------------------------------------------------------------
-
-Prepare the repository:
-
-  $ hg init pubdiv
-  $ cd pubdiv
-  $ for ch in a b; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-  $ hg glog
-  @  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-Make an amend and change phase to public:
-
-  $ sed -i "1 i I am first" b
-  $ hg amend
-  $ hg phase --public
-
-Amend again to create a cset divergent to public one:
-
-  $ hg up 1 --hidden -q
-  updated to hidden changeset 5f6d8a4bf34a
-  (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f)
-  working directory parent is obsolete! (5f6d8a4bf34a)
-
-  $ echo "I am second" >> b
-  $ hg ci --amend -m "updated b"
-  1 new content-divergent changesets
-
-  $ hg glog
-  @  3:dcdaf152280a updated b
-  |   draft content-divergent
-  |
-  | o  2:44f360db368f added b
-  |/    public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-
-Lets resolve the public content-divergence:
-
-  $ hg evolve --content-divergent
-  merge:[2] added b
-  with: [3] updated b
-  base: [1] added b
-  updating to "local" side of the conflict: 44f360db368f
-  merging "other" content-divergent changeset 'dcdaf152280a'
-  merging b
-  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-  committed as c1aa9cfb6cf8
-  working directory is now at c1aa9cfb6cf8
-
-Following graph log shows that it correctly merged the two divergent csets:
-
-  $ hg glog -p
-  @  5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f:
-  |   draft
-  |
-  |  diff -r 44f360db368f -r c1aa9cfb6cf8 b
-  |  --- a/b	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -1,2 +1,3 @@
-  |   I am first
-  |   b
-  |  +I am second
-  |
-  o  2:44f360db368f added b
-  |   public
-  |
-  |  diff -r 9092f1db7931 -r 44f360db368f b
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,2 @@
-  |  +I am first
-  |  +b
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-     diff -r 000000000000 -r 9092f1db7931 a
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +a
-  
-  $ hg evolve -l
-
-  $ cd ..
-
-Testing the case when both divergent cset has same parent and has conflict in merging:
-------------------------------------------------------------------------------
-
-Prepare the repository:
-
-  $ hg init pubdiv1
-  $ cd pubdiv1
-  $ for ch in a b; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-  $ hg glog
-  @  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-Make an amend and change phase to public:
-
-  $ echo "I am foo" > b
-  $ hg amend
-  $ hg phase --public
-
-Amend again to create a cset divergent to public one:
-
-  $ hg up 1 --hidden -q
-  updated to hidden changeset 5f6d8a4bf34a
-  (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c)
-  working directory parent is obsolete! (5f6d8a4bf34a)
-
-  $ echo "I am bar" > b
-  $ hg ci --amend -m "updated b"
-  1 new content-divergent changesets
-
-  $ hg glog
-  @  3:0e805383168e updated b
-  |   draft content-divergent
-  |
-  | o  2:580f2d01e52c added b
-  |/    public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-
-Lets resolve the divergence:
-
-  $ hg evolve --content-divergent
-  merge:[2] added b
-  with: [3] updated b
-  base: [1] added b
-  updating to "local" side of the conflict: 580f2d01e52c
-  merging "other" content-divergent changeset '0e805383168e'
-  merging b
-  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
-  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo "I am foobar" > b
-  $ hg resolve -m --tool union
-  (no more unresolved files)
-  continue: hg evolve --continue
-  $ hg evolve --continue
-  committed as 1a739394e9d4
-  working directory is now at 1a739394e9d4
-
-  $ hg glog
-  @  5:1a739394e9d4 phase-divergent update to 580f2d01e52c:
-  |   draft
-  |
-  o  2:580f2d01e52c added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-Testing the case when divergence is not created by actual diff change, but because of rebasing:
-------------------------------------------------------------------------------------------------
-
-Prepare the repo:
-
-  $ cd ..
-  $ hg init rebasediv
-  $ cd rebasediv
-  $ for ch in a b c; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-
-  $ hg glog
-  @  2:155349b645be added c
-  |   draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset:
-
-  $ hg up .^ -q
-  $ echo d > d
-  $ hg ci -Am "added d"
-  adding d
-  created new head
-
-  $ hg rebase -r 2 -d .
-  rebasing 2:155349b645be "added c"
-
-  $ hg glog
-  o  4:c0d7ee6604ea added c
-  |   draft
-  |
-  @  3:c9241b0f2d5b added d
-  |   draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull:
-  $ hg up 2 --hidden -q
-  updated to hidden changeset 155349b645be
-  (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea)
-  working directory parent is obsolete! (155349b645be)
-
-  $ echo cc >> c
-  $ hg ci --amend -m "updated c"
-  2 new content-divergent changesets
-
-Lets change the phase to --public of branch which is pulled from server:
-  $ hg phase --public -r 4
-  $ hg glog -p
-  @  5:f5f9b4fc8b77 updated c
-  |   draft content-divergent
-  |
-  |  diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,2 @@
-  |  +c
-  |  +cc
-  |
-  | o  4:c0d7ee6604ea added c
-  | |   public
-  | |
-  | |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
-  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  | |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  | |  @@ -0,0 +1,1 @@
-  | |  +c
-  | |
-  | o  3:c9241b0f2d5b added d
-  |/    public
-  |
-  |    diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +d
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +b
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-     diff -r 000000000000 -r 9092f1db7931 a
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +a
-  
-
-Evolve:
-  $ hg evolve --content-divergent
-  merge:[4] added c
-  with: [5] updated c
-  base: [2] added c
-  rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b
-  updating to "local" side of the conflict: c0d7ee6604ea
-  merging "other" content-divergent changeset 'c3d442d80993'
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  committed as 3b336cbee992
-  working directory is now at 3b336cbee992
-
-  $ hg glog -p
-  @  8:3b336cbee992 phase-divergent update to c0d7ee6604ea:
-  |   draft
-  |
-  |  diff -r c0d7ee6604ea -r 3b336cbee992 c
-  |  --- a/c	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -1,1 +1,2 @@
-  |   c
-  |  +cc
-  |
-  o  4:c0d7ee6604ea added c
-  |   public
-  |
-  |  diff -r c9241b0f2d5b -r c0d7ee6604ea c
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c
-  |
-  o  3:c9241b0f2d5b added d
-  |   public
-  |
-  |  diff -r 5f6d8a4bf34a -r c9241b0f2d5b d
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +d
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +b
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-     diff -r 000000000000 -r 9092f1db7931 a
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +a
-  
-Check that we don't have any unstable cset now:
-  $ hg evolve -l
-  $ cd ..
-
-Testing the case when csets are on different parent and no conflict in relocation and merging:
-----------------------------------------------------------------------------------------------
-
-  $ hg init pubdiv2
-  $ cd pubdiv2
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dd > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg up 1
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dd > d
-  $ echo e > e
-  $ hg add d e
-  $ hg ci -m "added d e"
-  created new head
-
-  $ hg glog
-  @  5:4291d72ee19a added d e
-  |   draft
-  |
-  | o  4:93cd84bbdaca added d
-  | |   draft
-  | |
-  | | o  3:9150fe93bec6 added d
-  | |/    draft
-  | |
-  | o  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 3 -s 5
-  1 changesets pruned
-  $ hg prune 3 -s 4 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-
-Change phase to public for one head:
-  $ hg phase -r 4 --public
-
-  $ hg glog
-  @  5:4291d72ee19a added d e
-  |   draft content-divergent
-  |
-  | o  4:93cd84bbdaca added d
-  | |   public
-  | |
-  | o  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-
-  $ hg evolve --content-divergent --any
-  merge:[4] added d
-  with: [5] added d e
-  base: [3] added d
-  rebasing "other" content-divergent changeset 4291d72ee19a on 155349b645be
-  updating to "local" side of the conflict: 93cd84bbdaca
-  merging "other" content-divergent changeset 'f88581407163'
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  committed as 4cbe48a0c3d9
-  working directory is now at 4cbe48a0c3d9
-
-  $ hg glog -l 1
-  @  8:4cbe48a0c3d9 phase-divergent update to 93cd84bbdaca:
-  |   draft
-  ~
-
-  $ hg evolve -l
-  $ cd ..
-
-Different parents, relocation conflict
---------------------------------------
-
-Testing the case when csets are on different parent and conflict in relocation
-but not in merging.
-
-  $ hg init pubdiv3
-  $ cd pubdiv3
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-
-  $ hg up .^^
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo d > d
-  $ echo cfoo > c
-  $ echo e > e
-  $ hg add d c e
-  $ hg ci -m "added d c e"
-  created new head
-
-  $ hg up 'desc("added c")'
-  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dd > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   draft
-  |
-  | o  4:f31bcc378766 added d c e
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-  $ hg prune 'min(desc("re:added d$"))' -s 'max(desc("re:added d$"))'
-  1 changesets pruned
-  $ hg prune 'min(desc("re:added d$"))' -s 'desc("added d c e")' --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-
-Change phase to public for one head:
-  $ hg phase --public -r 'max(desc("re:added d$"))'
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   public
-  |
-  | *  4:f31bcc378766 added d c e
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added d c e
-  base: [3] added d
-  rebasing "other" content-divergent changeset f31bcc378766 on 155349b645be
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ hg diff
-  diff -r 155349b645be c
-  --- a/c	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,5 @@
-  +<<<<<<< destination: 155349b645be - test: added c
-   c
-  +=======
-  +cfoo
-  +>>>>>>> evolving:    f31bcc378766 - test: added d c e
-  diff -r 155349b645be d
-  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  @@ -0,0 +1,1 @@
-  +d
-  diff -r 155349b645be 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 @@
-  +e
-
-  $ echo c > c
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  evolving 4:f31bcc378766 "added d c e"
-  updating to "local" side of the conflict: 93cd84bbdaca
-  merging "other" content-divergent changeset 'bd28d3e4a228'
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  committed as 412dde898967
-  working directory is now at 412dde898967
-  $ hg export
-  # HG changeset patch
-  # User test
-  # Date 0 0
-  #      Thu Jan 01 00:00:00 1970 +0000
-  # Node ID 412dde898967b50e7d334aefff778a9af46d29d1
-  # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
-  phase-divergent update to 93cd84bbdaca:
-  
-  added d c e
-  
-  diff -r 93cd84bbdaca -r 412dde898967 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 @@
-  +e
-
-  $ hg evolve -l
-  $ cd ..
-
-Testing the case when merging leads to conflicts but relocation won't:
----------------------------------------------------------------------
-
-  $ hg init pubdiv3.5
-  $ cd pubdiv3.5
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-
-  $ hg up .^^
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dconflict > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dd > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   draft
-  |
-  | o  4:9411ad1fe615 added d
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-  $ hg prune 3 -s 5
-  1 changesets pruned
-  $ hg prune 3 -s 4 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-
-Change phase to public for one head:
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   public
-  |
-  | *  4:9411ad1fe615 added d
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added d
-  base: [3] added d
-  rebasing "other" content-divergent changeset 9411ad1fe615 on 155349b645be
-  updating to "local" side of the conflict: 93cd84bbdaca
-  merging "other" content-divergent changeset 'b5c690cdf1d5'
-  merging d
-  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
-  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo d > d
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  committed as 2a0f44767904
-  working directory is now at 2a0f44767904
-
-  $ hg evolve -l
-  $ cd ..
-
-Testing the case when relocation and merging both leads to conflicts:
---------------------------------------------------------------------
-
-  $ hg init pubdiv4
-  $ cd pubdiv4
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-
-  $ hg up .^^
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo cfoo > c
-  $ echo e > e
-  $ echo dconflict > d
-  $ hg add c e d
-  $ hg ci -m "added c e"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dd > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   draft
-  |
-  | o  4:3c17c7afaf6e added c e
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-  $ hg prune 3 -s 5
-  1 changesets pruned
-  $ hg prune 3 -s 4 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-
-Change phase to public for one head:
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   public
-  |
-  | *  4:3c17c7afaf6e added c e
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added c e
-  base: [3] added d
-  rebasing "other" content-divergent changeset 3c17c7afaf6e on 155349b645be
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ hg diff
-  diff -r 155349b645be c
-  --- a/c	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,5 @@
-  +<<<<<<< destination: 155349b645be - test: added c
-   c
-  +=======
-  +cfoo
-  +>>>>>>> evolving:    3c17c7afaf6e - test: added c e
-  diff -r 155349b645be d
-  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  @@ -0,0 +1,1 @@
-  +dconflict
-  diff -r 155349b645be 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 @@
-  +e
-
-  $ echo cfoo > c
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  evolving 4:3c17c7afaf6e "added c e"
-  updating to "local" side of the conflict: 93cd84bbdaca
-  merging "other" content-divergent changeset 'c4ce3d34e784'
-  merging d
-  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
-  2 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo d > d
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  committed as b9082a9e66ce
-  working directory is now at b9082a9e66ce
-
-  $ hg evolve -l
-  $ cd ..
-
-Different parent, simple conflict on relocate, deleted file on actual merge
----------------------------------------------------------------------------
-
-Changeset "added c e" is also removing 'd'. This should conflict with the update
-to 'd' in the successors of 'adding d' when solving the content divergence.
-
-  $ hg init pubdiv-parent-deleted-file
-  $ cd pubdiv-parent-deleted-file
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Aqm "added "$ch;
-  > done;
-
-  $ hg up 'desc("added b")'
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo cfoo > c
-  $ echo e > e
-  $ hg add c e
-  $ hg ci -m "added c e"
-  created new head
-
-  $ hg up 'desc("re:added c$")'
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dd > d
-  $ hg add d
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog --patch --rev 'sort(all(), "topo")'
-  @  5:93cd84bbdaca added d
-  |   draft
-  |
-  |  diff -r 155349b645be -r 93cd84bbdaca d
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +dd
-  |
-  | o  3:9150fe93bec6 added d
-  |/    draft
-  |
-  |    diff -r 155349b645be -r 9150fe93bec6 d
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +d
-  |
-  o  2:155349b645be added c
-  |   draft
-  |
-  |  diff -r 5f6d8a4bf34a -r 155349b645be c
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c
-  |
-  | o  4:e568fd1029bb added c e
-  |/    draft
-  |
-  |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +cfoo
-  |    diff -r 5f6d8a4bf34a -r e568fd1029bb 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 @@
-  |    +e
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +b
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-     diff -r 000000000000 -r 9092f1db7931 a
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +a
-  
-  $ hg prune 'min(desc("added d"))' -s 'max(desc("added d"))'
-  1 changesets pruned
-  $ hg prune 'min(desc("added d"))' -s 'desc("added c e")' --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-
-Change phase to public for one head:
-  $ hg phase --public -r 'max(desc("added d"))'
-
-  $ hg glog
-  @  5:93cd84bbdaca added d
-  |   public
-  |
-  | *  4:e568fd1029bb added c e
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-
-  $ hg glog --patch --rev 'sort(all(), "topo")' --hidden
-  @  5:93cd84bbdaca added d
-  |   public
-  |
-  |  diff -r 155349b645be -r 93cd84bbdaca d
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +dd
-  |
-  | x  3:9150fe93bec6 added d
-  |/    draft
-  |
-  |    diff -r 155349b645be -r 9150fe93bec6 d
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +d
-  |
-  o  2:155349b645be added c
-  |   public
-  |
-  |  diff -r 5f6d8a4bf34a -r 155349b645be c
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c
-  |
-  | *  4:e568fd1029bb added c e
-  |/    draft content-divergent
-  |
-  |    diff -r 5f6d8a4bf34a -r e568fd1029bb c
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +cfoo
-  |    diff -r 5f6d8a4bf34a -r e568fd1029bb 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 @@
-  |    +e
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  |  diff -r 9092f1db7931 -r 5f6d8a4bf34a b
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +b
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-     diff -r 000000000000 -r 9092f1db7931 a
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/a	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +a
-  
-
-  $ hg obslog --all --rev tip --patch
-  @  93cd84bbdaca (5) added d
-  |
-  | *  e568fd1029bb (4) added c e
-  |/
-  x  9150fe93bec6 (3) added d
-       rewritten(content) as 93cd84bbdaca using prune by test (Thu Jan 01 00:00:00 1970 +0000)
-         diff -r 9150fe93bec6 -r 93cd84bbdaca d
-         --- a/d	Thu Jan 01 00:00:00 1970 +0000
-         +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-         @@ -1,1 +1,1 @@
-         -d
-         +dd
-  
-       rewritten(description, parent, content) as e568fd1029bb using prune by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available, changesets rebased)
-  
-
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added c e
-  base: [3] added d
-  rebasing "other" content-divergent changeset e568fd1029bb on 155349b645be
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ hg diff
-  diff -r 155349b645be c
-  --- a/c	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,5 @@
-  +<<<<<<< destination: 155349b645be - test: added c
-   c
-  +=======
-  +cfoo
-  +>>>>>>> evolving:    e568fd1029bb - test: added c e
-  diff -r 155349b645be 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 @@
-  +e
-
-  $ echo c > c
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  evolving 4:e568fd1029bb "added c e"
-  updating to "local" side of the conflict: 93cd84bbdaca
-  merging "other" content-divergent changeset '2af3359250d3'
-  file 'd' was deleted in other but was modified in local.
-  What do you want to do?
-  use (c)hanged version, (d)elete, or leave (u)nresolved? u
-  1 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ hg sum
-  parent: 5:93cd84bbdaca 
-   added d
-  parent: 6:2af3359250d3 tip (content-divergent)
-   added c e
-  branch: default
-  commit: 1 modified, 1 unknown, 1 unresolved (merge)
-  update: (current)
-  phases: 1 draft
-  content-divergent: 1 changesets
-  evolve: (evolve --continue)
-
-  $ echo resolved > d
-  $ hg resolve -m d
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  committed as bc1f4610744c
-  working directory is now at bc1f4610744c
-
-  $ hg export
-  # HG changeset patch
-  # User test
-  # Date 0 0
-  #      Thu Jan 01 00:00:00 1970 +0000
-  # Node ID bc1f4610744c6aa0e851d3876a61bfff6243b31c
-  # Parent  93cd84bbdacaeb8f881c29a609dbdd30c38cbc57
-  phase-divergent update to 93cd84bbdaca:
-  
-  added c e
-  
-  diff -r 93cd84bbdaca -r bc1f4610744c d
-  --- a/d	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,1 @@
-  -dd
-  +resolved
-  diff -r 93cd84bbdaca -r bc1f4610744c 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 @@
-  +e
-
-  $ hg evolve -l
-  $ cd ..
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on same parent and no conflict in merging.
----------------------------------------------------------------------
-
-Prepare the repo:
-
-  $ hg init pubdiv5
-  $ cd pubdiv5
-  $ for ch in a b c; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo ch > ch
-  $ hg add ch
-  $ hg ci -m "added ch"
-  created new head
-
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo ch > ch
-  $ hg add ch
-  $ hg ci -m "added c"
-  created new head
-
-  $ hg glog
-  @  4:f7c1071f1e7c added c
-  |   draft
-  |
-  | o  3:90522bccf499 added ch
-  |/    draft
-  |
-  | o  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 2 -s 3
-  1 changesets pruned
-  $ hg prune 2 -s 4 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 4
-
-  $ hg glog
-  @  4:f7c1071f1e7c added c
-  |   public
-  |
-  | *  3:90522bccf499 added ch
-  |/    draft content-divergent
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[4] added c
-  with: [3] added ch
-  base: [2] added c
-  merging "other" content-divergent changeset '90522bccf499'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  content-divergent changesets differ by descriptions only, discarding 90522bccf499
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   4:f7c1071f1e7c
-  tag:         tip
-  parent:      1:5f6d8a4bf34a
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added c
-  
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and no conflict in merging and relocation.
----------------------------------------------------------------------------------
-
-Prepare the repo:
-
-  $ cd ..
-  $ hg init pubdiv6
-  $ cd pubdiv6
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-  adding d
-
-  $ hg up 1
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ hg add dh
-  $ hg ci -m "added dh"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ hg add dh
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   draft
-  |
-  | o  4:5acd58ef5066 added dh
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 3 -s 4
-  1 changesets pruned
-  $ hg prune 3 -s 5 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   public
-  |
-  | *  4:5acd58ef5066 added dh
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added dh
-  base: [3] added d
-  rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be
-  updating to "local" side of the conflict: e800202333a4
-  merging "other" content-divergent changeset 'ae3429430ef1'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  content-divergent changesets differ by descriptions only, discarding ae3429430ef1
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   5:e800202333a4
-  tag:         tip
-  parent:      2:155349b645be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added d
-  
-Testing the case when "merging results in same as public cset" where:
-both the csets are on same parent and merging leads to conflict.
----------------------------------------------------------------------
-
-Prepare the repo:
-
-  $ cd ..
-  $ hg init pubdiv7
-  $ cd pubdiv7
-  $ for ch in a b c; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo chconflict > ch
-  $ hg add ch
-  $ hg ci -m "added ch"
-  created new head
-
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo ch > ch
-  $ hg add ch
-  $ hg ci -m "added c"
-  created new head
-
-  $ hg glog
-  @  4:f7c1071f1e7c added c
-  |   draft
-  |
-  | o  3:229da2719b19 added ch
-  |/    draft
-  |
-  | o  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 2 -s 3
-  1 changesets pruned
-  $ hg prune 2 -s 4 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 4
-
-  $ hg glog
-  @  4:f7c1071f1e7c added c
-  |   public
-  |
-  | *  3:229da2719b19 added ch
-  |/    draft content-divergent
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[4] added c
-  with: [3] added ch
-  base: [2] added c
-  merging "other" content-divergent changeset '229da2719b19'
-  merging ch
-  warning: conflicts while merging ch! (edit, then use 'hg resolve --mark')
-  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ hg diff
-  diff -r f7c1071f1e7c ch
-  --- a/ch	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/ch	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,5 @@
-  +<<<<<<< local: f7c1071f1e7c - test: added c
-   ch
-  +=======
-  +chconflict
-  +>>>>>>> other: 229da2719b19 - test: added ch
-
-  $ echo ch > ch
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  content-divergent changesets differ by descriptions only, discarding 229da2719b19
-  working directory is now at f7c1071f1e7c
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   4:f7c1071f1e7c
-  tag:         tip
-  parent:      1:5f6d8a4bf34a
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added c
-  
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and relocation leads to conflict but merging won't.
-------------------------------------------------------------------------------------------
-Prepare the repo:
-
-  $ cd ..
-  $ hg init pubdiv8
-  $ cd pubdiv8
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-  adding d
-
-  $ hg up 1
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ echo cc > c
-  $ hg add dh c
-  $ hg ci -m "added dh"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ hg add dh
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   draft
-  |
-  | o  4:f89a8e2f86ac added dh
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 3 -s 4
-  1 changesets pruned
-  $ hg prune 3 -s 5 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   public
-  |
-  | *  4:f89a8e2f86ac added dh
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added dh
-  base: [3] added d
-  rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo c > c
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  evolving 4:f89a8e2f86ac "added dh"
-  updating to "local" side of the conflict: e800202333a4
-  merging "other" content-divergent changeset 'bc309da55b88'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  content-divergent changesets differ by descriptions only, discarding bc309da55b88
-  working directory is now at e800202333a4
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   5:e800202333a4
-  tag:         tip
-  parent:      2:155349b645be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added d
-  
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and merging leads to conflict but relocation won't.
-------------------------------------------------------------------------------------------
-Prepare the repo:
-
-  $ cd ..
-  $ hg init pubdiv9
-  $ cd pubdiv9
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-  adding d
-
-  $ hg up 1
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dhconflict > dh
-  $ hg add dh
-  $ hg ci -m "added dh"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ hg add dh
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   draft
-  |
-  | o  4:db0b7bba0aae added dh
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 3 -s 4
-  1 changesets pruned
-  $ hg prune 3 -s 5 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   public
-  |
-  | *  4:db0b7bba0aae added dh
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added dh
-  base: [3] added d
-  rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be
-  updating to "local" side of the conflict: e800202333a4
-  merging "other" content-divergent changeset 'a5bbf2042450'
-  merging dh
-  warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
-  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo dh > dh
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  content-divergent changesets differ by descriptions only, discarding a5bbf2042450
-  working directory is now at e800202333a4
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   5:e800202333a4
-  tag:         tip
-  parent:      2:155349b645be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added d
-  
-
-Testing the case when "merging results in same as public cset" where:
-both the csets are on different parent and relocation and merging both leads to conflict:
------------------------------------------------------------------------------------------
-Prepare the repo:
-
-  $ cd ..
-  $ hg init pubdiv10
-  $ cd pubdiv10
-  $ for ch in a b c d; do
-  >   echo $ch > $ch;
-  >   hg ci -Am "added "$ch;
-  > done;
-  adding a
-  adding b
-  adding c
-  adding d
-
-  $ hg up 1
-  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo dhconflict > dh
-  $ echo cc > c
-  $ hg add dh c
-  $ hg ci -m "added dh"
-  created new head
-
-  $ hg up 2
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo dh > dh
-  $ hg add dh
-  $ hg ci -m "added d"
-  created new head
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   draft
-  |
-  | o  4:67b19bbd770f added dh
-  | |   draft
-  | |
-  +---o  3:9150fe93bec6 added d
-  | |     draft
-  | |
-  o |  2:155349b645be added c
-  |/    draft
-  |
-  o  1:5f6d8a4bf34a added b
-  |   draft
-  |
-  o  0:9092f1db7931 added a
-      draft
-  
-
-  $ hg prune 3 -s 4
-  1 changesets pruned
-  $ hg prune 3 -s 5 --hidden
-  1 changesets pruned
-  2 new content-divergent changesets
-  $ hg phase --public -r 5
-
-  $ hg glog
-  @  5:e800202333a4 added d
-  |   public
-  |
-  | *  4:67b19bbd770f added dh
-  | |   draft content-divergent
-  | |
-  o |  2:155349b645be added c
-  |/    public
-  |
-  o  1:5f6d8a4bf34a added b
-  |   public
-  |
-  o  0:9092f1db7931 added a
-      public
-  
-  $ hg evolve --content-divergent --any
-  merge:[5] added d
-  with: [4] added dh
-  base: [3] added d
-  rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo c > c
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  evolving 4:67b19bbd770f "added dh"
-  updating to "local" side of the conflict: e800202333a4
-  merging "other" content-divergent changeset '09054d1f3c97'
-  merging dh
-  warning: conflicts while merging dh! (edit, then use 'hg resolve --mark')
-  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  fix conflicts and see `hg help evolve.interrupted`
-  [1]
-
-  $ echo dh > dh
-  $ hg res -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-
-  $ hg evolve --continue
-  content-divergent changesets differ by descriptions only, discarding 09054d1f3c97
-  working directory is now at e800202333a4
-
-  $ hg evolve -l
-
-  $ hg par
-  changeset:   5:e800202333a4
-  tag:         tip
-  parent:      2:155349b645be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     added d
-  
-
-  $ cd ..
-
-Test a pratical "rebase" case
-=============================
-
-Initial setup
-
-  $ hg init rebase-divergence
-  $ cd rebase-divergence
-  $ echo root >> root
-  $ hg add root
-  $ hg commit -m root
-  $ for x in c_A c_B c_C c_D; do
-  >     echo $x >> $x
-  >     hg add $x
-  >     hg commit -m $x
-  > done
-
-  $ hg up 'desc("c_A")'
-  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
-
-  $ for x in c_E c_F; do
-  >     echo $x >> $x
-  >     hg add $x
-  >     hg commit -m $x
-  > done
-  created new head
-
-(creating divergence locally for simplicity)
-
-  $ node=`hg log --rev 'desc("c_E")' -T '{node}'`
-  $ hg rebase -s $node -d 'desc("c_B")'
-  rebasing 5:4ab2719bbab9 "c_E"
-  rebasing 6:77ccbf8d837e "c_F" (tip)
-  $ hg phase --public tip
-  $ hg rebase --hidden -s $node -d 'desc("c_C")' --config experimental.evolution.allowdivergence=yes
-  rebasing 5:4ab2719bbab9 "c_E"
-  rebasing 6:77ccbf8d837e "c_F"
-  2 new content-divergent changesets
-
-  $ hg sum
-  parent: 8:a52ac76b45f5 
-   c_F
-  branch: default
-  commit: (clean)
-  update: 4 new changesets, 3 branch heads (merge)
-  phases: 4 draft
-  content-divergent: 2 changesets
-  $ hg evolve --list
-  b4a584aea4bd: c_E
-    content-divergent: c7d2d47c7240 (public) (precursor 4ab2719bbab9)
-  
-  8ae8db670b4a: c_F
-    content-divergent: a52ac76b45f5 (public) (precursor 77ccbf8d837e)
-  
-  $ hg log -G --patch
-  *  changeset:   10:8ae8db670b4a
-  |  tag:         tip
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  instability: content-divergent
-  |  summary:     c_F
-  |
-  |  diff -r b4a584aea4bd -r 8ae8db670b4a c_F
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_F
-  |
-  *  changeset:   9:b4a584aea4bd
-  |  parent:      3:abb77b893f28
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  instability: content-divergent
-  |  summary:     c_E
-  |
-  |  diff -r abb77b893f28 -r b4a584aea4bd c_E
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_E
-  |
-  | @  changeset:   8:a52ac76b45f5
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  summary:     c_F
-  | |
-  | |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
-  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  | |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
-  | |  @@ -0,0 +1,1 @@
-  | |  +c_F
-  | |
-  | o  changeset:   7:c7d2d47c7240
-  | |  parent:      2:eb1b4e1205b8
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  summary:     c_E
-  | |
-  | |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
-  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  | |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
-  | |  @@ -0,0 +1,1 @@
-  | |  +c_E
-  | |
-  +---o  changeset:   4:dbb960d6c97c
-  | |    user:        test
-  | |    date:        Thu Jan 01 00:00:00 1970 +0000
-  | |    summary:     c_D
-  | |
-  | |    diff -r abb77b893f28 -r dbb960d6c97c c_D
-  | |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  | |    +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
-  | |    @@ -0,0 +1,1 @@
-  | |    +c_D
-  | |
-  o |  changeset:   3:abb77b893f28
-  |/   user:        test
-  |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    summary:     c_C
-  |
-  |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +c_C
-  |
-  o  changeset:   2:eb1b4e1205b8
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_B
-  |
-  |  diff -r e31751786014 -r eb1b4e1205b8 c_B
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_B
-  |
-  o  changeset:   1:e31751786014
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_A
-  |
-  |  diff -r 1e4be0697311 -r e31751786014 c_A
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_A
-  |
-  o  changeset:   0:1e4be0697311
-     user:        test
-     date:        Thu Jan 01 00:00:00 1970 +0000
-     summary:     root
-  
-     diff -r 000000000000 -r 1e4be0697311 root
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/root	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +root
-  
-
-Run automatic evolution
-
-  $ hg evolve --content-divergent --rev 'not public() and desc("c_E")::'
-  merge:[7] c_E
-  with: [9] c_E
-  base: [5] c_E
-  rebasing "other" content-divergent changeset b4a584aea4bd on eb1b4e1205b8
-  updating to "local" side of the conflict: c7d2d47c7240
-  merging "other" content-divergent changeset '0773642cfa95'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  1 new orphan changesets
-  merge:[8] c_F
-  with: [10] c_F
-  base: [6] c_F
-  rebasing "other" content-divergent changeset 8ae8db670b4a on c7d2d47c7240
-  updating to "local" side of the conflict: a52ac76b45f5
-  merging "other" content-divergent changeset '6a87ed4aa317'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg sum
-  parent: 8:a52ac76b45f5 tip
-   c_F
-  branch: default
-  commit: (clean)
-  update: 2 new changesets, 2 branch heads (merge)
-  phases: 2 draft
-
-  $ hg evolve --list
-
-  $ hg log -G --patch
-  @  changeset:   8:a52ac76b45f5
-  |  tag:         tip
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_F
-  |
-  |  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_F
-  |
-  o  changeset:   7:c7d2d47c7240
-  |  parent:      2:eb1b4e1205b8
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_E
-  |
-  |  diff -r eb1b4e1205b8 -r c7d2d47c7240 c_E
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_E	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_E
-  |
-  | o  changeset:   4:dbb960d6c97c
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  summary:     c_D
-  | |
-  | |  diff -r abb77b893f28 -r dbb960d6c97c c_D
-  | |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  | |  +++ b/c_D	Thu Jan 01 00:00:00 1970 +0000
-  | |  @@ -0,0 +1,1 @@
-  | |  +c_D
-  | |
-  | o  changeset:   3:abb77b893f28
-  |/   user:        test
-  |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    summary:     c_C
-  |
-  |    diff -r eb1b4e1205b8 -r abb77b893f28 c_C
-  |    --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |    +++ b/c_C	Thu Jan 01 00:00:00 1970 +0000
-  |    @@ -0,0 +1,1 @@
-  |    +c_C
-  |
-  o  changeset:   2:eb1b4e1205b8
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_B
-  |
-  |  diff -r e31751786014 -r eb1b4e1205b8 c_B
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_B	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_B
-  |
-  o  changeset:   1:e31751786014
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     c_A
-  |
-  |  diff -r 1e4be0697311 -r e31751786014 c_A
-  |  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  |  +++ b/c_A	Thu Jan 01 00:00:00 1970 +0000
-  |  @@ -0,0 +1,1 @@
-  |  +c_A
-  |
-  o  changeset:   0:1e4be0697311
-     user:        test
-     date:        Thu Jan 01 00:00:00 1970 +0000
-     summary:     root
-  
-     diff -r 000000000000 -r 1e4be0697311 root
-     --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-     +++ b/root	Thu Jan 01 00:00:00 1970 +0000
-     @@ -0,0 +1,1 @@
-     +root
-  
-  $ hg export tip
-  # HG changeset patch
-  # User test
-  # Date 0 0
-  #      Thu Jan 01 00:00:00 1970 +0000
-  # Node ID a52ac76b45f523a039fc4a938d79874f4bdb1a85
-  # Parent  c7d2d47c7240562be5cbd1a24080dd0396178709
-  c_F
-  
-  diff -r c7d2d47c7240 -r a52ac76b45f5 c_F
-  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/c_F	Thu Jan 01 00:00:00 1970 +0000
-  @@ -0,0 +1,1 @@
-  +c_F
-
-  $ hg obslog --rev a52ac76b45f5
-  @    a52ac76b45f5 (8) c_F
-  |\
-  x |  6a87ed4aa317 (12) c_F
-  | |    rewritten as a52ac76b45f5 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
-  | |
-  x |  8ae8db670b4a (10) c_F
-  |/     rewritten(parent) as 6a87ed4aa317 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
-  |
-  x  77ccbf8d837e (6) c_F
-       rewritten(parent) as 8ae8db670b4a using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
-       rewritten(parent) as a52ac76b45f5 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
-