--- a/tests/test-evolve-public-content-divergent.t Sun Mar 03 16:29:32 2019 +0100
+++ b/tests/test-evolve-public-content-divergent.t Sat Feb 23 00:47:14 2019 +0530
@@ -363,3 +363,336 @@
Check that we don't have any troubled 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
+ computing new diff
+ 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 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 cfoo > c
+ $ echo e > e
+ $ hg add c e
+ $ hg ci -m "added c e"
+ 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:e568fd1029bb 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: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 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'
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ computing new diff
+ committed as 06e4564a3897
+ working directory is now at 06e4564a3897
+
+ $ 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
+ computing new diff
+ committed as b9082a9e66ce
+ working directory is now at b9082a9e66ce
+
+ $ hg evolve -l
+ $ cd ..