evolve: cover continue case in pubdiv when merging results in same as public
This patch is the part of a series which is adding support of public
divergence resolution of the case when merging results in same as pubic
cset. Changes made in this patch cover the --continue flag for the case:
when we had conflicts in merging.
Modified lines in previously added tests reflects the changed behaviour.
Also added some additional tests. I guess I have covered every possbile
case in test-evolve-public-content-divergent.t
While reviewing, if you see any test missed please let me know.
(I think there is one test missed that I will send as a follow-up)
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
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
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
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
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