evolve: handle a case in pubic-div when merging results in same as public
In public divergence resolution, what we do is:
1) first apply content divergence resolution
2) then phase divergent resolution on resultant node of 1) case
While doing case 1 it is possible that result of merging the two csets
would have same changes as public one contains. And then processing
the case 2 would create an empty commit which is not something we want
to do.
So this patch catch that same case when merging results in same as public
cset and don't create a new node, instead to solve the divergence
it just add a obsmarker from "other divergent" to "public divergent"
i.e. [other, (public,)]
Next patch will add the continue case handling for this same case.
This patch also adds the tests for the different cases which are possible
for the above mentioned case.
There is test for continue case too which is broken in this patch
and will be fixed in next patch.
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
computing new diff
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
computing new diff
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
computing new diff
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 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 ..
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
$ 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
$ 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
computing new diff
transaction abort!
rollback completed
abort: cannot obsolete public changeset: f7c1071f1e7c
(see 'hg help phases' for details)
[255]
$ hg evolve -l
229da2719b19: added ch
content-divergent: f7c1071f1e7c (public) (precursor 155349b645be)
$ hg par
changeset: 4:f7c1071f1e7c
tag: tip
parent: 1:5f6d8a4bf34a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: added c
changeset: 3:229da2719b19
parent: 1:5f6d8a4bf34a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
instability: content-divergent
summary: added ch