test-merge-criss-cross.t
354 lines
| 9.8 KiB
| text/troff
|
Tads3Lexer
/ tests / test-merge-criss-cross.t
Mads Kiilerich
|
r20636 | Criss cross merging | ||
$ hg init criss-cross | ||||
$ cd criss-cross | ||||
$ echo '0 base' > f1 | ||||
$ echo '0 base' > f2 | ||||
$ hg ci -Aqm '0 base' | ||||
$ echo '1 first change' > f1 | ||||
$ hg ci -m '1 first change f1' | ||||
$ hg up -qr0 | ||||
$ echo '2 first change' > f2 | ||||
$ hg ci -qm '2 first change f2' | ||||
$ hg merge -qr 1 | ||||
$ hg ci -m '3 merge' | ||||
$ hg up -qr2 | ||||
$ hg merge -qr1 | ||||
$ hg ci -qm '4 merge' | ||||
$ echo '5 second change' > f1 | ||||
$ hg ci -m '5 second change f1' | ||||
Mads Kiilerich
|
r21125 | $ hg up -r3 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Mads Kiilerich
|
r20636 | $ echo '6 second change' > f2 | ||
$ hg ci -m '6 second change f2' | ||||
$ hg log -G | ||||
@ changeset: 6:3b08d01b0ab5 | ||||
| tag: tip | ||||
| parent: 3:cf89f02107e5 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: 6 second change f2 | ||||
| | ||||
| o changeset: 5:adfe50279922 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: 5 second change f1 | ||||
| | | ||||
| o changeset: 4:7d3e55501ae6 | ||||
| |\ parent: 2:40663881a6dd | ||||
| | | parent: 1:0f6b37dbe527 | ||||
| | | user: test | ||||
| | | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | | summary: 4 merge | ||||
| | | | ||||
o---+ changeset: 3:cf89f02107e5 | ||||
| | | parent: 2:40663881a6dd | ||||
|/ / parent: 1:0f6b37dbe527 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: 3 merge | ||||
| | | ||||
| o changeset: 2:40663881a6dd | ||||
| | parent: 0:40494bf2444c | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: 2 first change f2 | ||||
| | | ||||
o | changeset: 1:0f6b37dbe527 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: 1 first change f1 | ||||
| | ||||
o changeset: 0:40494bf2444c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 0 base | ||||
Mads Kiilerich
|
r22672 | $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor='!' | ||
Mads Kiilerich
|
r21125 | note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922 | ||
Mads Kiilerich
|
r21126 | alternatively, use --config merge.preferancestor=40663881a6dd | ||
Mads Kiilerich
|
r20636 | searching for copies back to rev 3 | ||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922 | ||||
Mads Kiilerich
|
r21391 | preserving f2 for resolve of f2 | ||
Mads Kiilerich
|
r20636 | f1: remote is newer -> g | ||
getting f1 | ||||
updating: f1 1/2 files (50.00%) | ||||
Mads Kiilerich
|
r21391 | f2: versions differ -> m | ||
Mads Kiilerich
|
r20636 | updating: f2 2/2 files (100.00%) | ||
picked tool 'internal:dump' for f2 (binary False symlink False) | ||||
merging f2 | ||||
my f2@3b08d01b0ab5+ other f2@adfe50279922 ancestor f2@40494bf2444c | ||||
1 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||||
[1] | ||||
$ head * | ||||
==> f1 <== | ||||
5 second change | ||||
==> f2 <== | ||||
6 second change | ||||
==> f2.base <== | ||||
0 base | ||||
==> f2.local <== | ||||
6 second change | ||||
==> f2.orig <== | ||||
6 second change | ||||
==> f2.other <== | ||||
2 first change | ||||
Mads Kiilerich
|
r21126 | $ hg up -qC . | ||
$ hg merge -v --tool internal:dump 5 --config merge.preferancestor="null 40663881 3b08d" | ||||
note: using 40663881a6dd as ancestor of 3b08d01b0ab5 and adfe50279922 | ||||
alternatively, use --config merge.preferancestor=0f6b37dbe527 | ||||
resolving manifests | ||||
merging f1 | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||||
[1] | ||||
Mads Kiilerich
|
r21128 | Redo merge with merge.preferancestor="*" to enable bid merge | ||
$ rm f* | ||||
$ hg up -qC . | ||||
$ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor="*" | ||||
Mads Kiilerich
|
r21171 | note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd | ||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 0f6b37dbe527 | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922 | ||||
Mads Kiilerich
|
r21269 | f1: remote is newer -> g | ||
f2: versions differ -> m | ||||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 40663881a6dd | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922 | ||||
Martin von Zweigbergk
|
r23638 | f1: versions differ -> m | ||
Martin von Zweigbergk
|
r23482 | f2: remote unchanged -> k | ||
Mads Kiilerich
|
r21128 | |||
auction for merging merge bids | ||||
f1: picking 'get' action | ||||
f2: picking 'keep' action | ||||
end of auction | ||||
f1: remote is newer -> g | ||||
getting f1 | ||||
updating: f1 1/1 files (100.00%) | ||||
Martin von Zweigbergk
|
r23482 | f2: remote unchanged -> k | ||
Mads Kiilerich
|
r21128 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
(branch merge, don't forget to commit) | ||||
$ head * | ||||
==> f1 <== | ||||
5 second change | ||||
==> f2 <== | ||||
6 second change | ||||
The other way around: | ||||
$ hg up -C -r5 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge -v --debug --config merge.preferancestor="*" | ||||
Mads Kiilerich
|
r21171 | note: merging adfe50279922+ and 3b08d01b0ab5 using bids from ancestors 0f6b37dbe527 and 40663881a6dd | ||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 0f6b37dbe527 | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 0f6b37dbe527, local: adfe50279922+, remote: 3b08d01b0ab5 | ||||
Martin von Zweigbergk
|
r23482 | f1: remote unchanged -> k | ||
Mads Kiilerich
|
r21269 | f2: versions differ -> m | ||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 40663881a6dd | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 40663881a6dd, local: adfe50279922+, remote: 3b08d01b0ab5 | ||||
Martin von Zweigbergk
|
r23638 | f1: versions differ -> m | ||
Mads Kiilerich
|
r21391 | f2: remote is newer -> g | ||
Mads Kiilerich
|
r21128 | |||
auction for merging merge bids | ||||
f1: picking 'keep' action | ||||
f2: picking 'get' action | ||||
end of auction | ||||
Mads Kiilerich
|
r21389 | f2: remote is newer -> g | ||
Mads Kiilerich
|
r21128 | getting f2 | ||
updating: f2 1/1 files (100.00%) | ||||
Martin von Zweigbergk
|
r23482 | f1: remote unchanged -> k | ||
Mads Kiilerich
|
r21128 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
(branch merge, don't forget to commit) | ||||
$ head * | ||||
==> f1 <== | ||||
5 second change | ||||
==> f2 <== | ||||
6 second change | ||||
Verify how the output looks and and how verbose it is: | ||||
$ hg up -qC | ||||
Mads Kiilerich
|
r22672 | $ hg merge | ||
Mads Kiilerich
|
r21128 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
(branch merge, don't forget to commit) | ||||
$ hg up -qC | ||||
Mads Kiilerich
|
r22672 | $ hg merge -v | ||
Mads Kiilerich
|
r21171 | note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd | ||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 0f6b37dbe527 | ||||
resolving manifests | ||||
calculating bids for ancestor 40663881a6dd | ||||
resolving manifests | ||||
auction for merging merge bids | ||||
f1: picking 'get' action | ||||
f2: picking 'keep' action | ||||
end of auction | ||||
getting f1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg up -qC | ||||
$ hg merge -v --debug --config merge.preferancestor="*" | ||||
Mads Kiilerich
|
r21171 | note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd | ||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 0f6b37dbe527 | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922 | ||||
Mads Kiilerich
|
r21269 | f1: remote is newer -> g | ||
f2: versions differ -> m | ||||
Mads Kiilerich
|
r21128 | |||
calculating bids for ancestor 40663881a6dd | ||||
searching for copies back to rev 3 | ||||
resolving manifests | ||||
branchmerge: True, force: False, partial: False | ||||
ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922 | ||||
Martin von Zweigbergk
|
r23638 | f1: versions differ -> m | ||
Martin von Zweigbergk
|
r23482 | f2: remote unchanged -> k | ||
Mads Kiilerich
|
r21128 | |||
auction for merging merge bids | ||||
f1: picking 'get' action | ||||
f2: picking 'keep' action | ||||
end of auction | ||||
f1: remote is newer -> g | ||||
getting f1 | ||||
updating: f1 1/1 files (100.00%) | ||||
Martin von Zweigbergk
|
r23482 | f2: remote unchanged -> k | ||
Mads Kiilerich
|
r21128 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
(branch merge, don't forget to commit) | ||||
Mads Kiilerich
|
r20636 | $ cd .. | ||
Mads Kiilerich
|
r21169 | |||
http://stackoverflow.com/questions/9350005/how-do-i-specify-a-merge-base-to-use-in-a-hg-merge/9430810 | ||||
$ hg init ancestor-merging | ||||
$ cd ancestor-merging | ||||
$ echo a > x | ||||
$ hg commit -A -m a x | ||||
$ hg update -q 0 | ||||
$ echo b >> x | ||||
$ hg commit -m b | ||||
$ hg update -q 0 | ||||
$ echo c >> x | ||||
$ hg commit -qm c | ||||
$ hg update -q 1 | ||||
$ hg merge -q --tool internal:local 2 | ||||
$ echo c >> x | ||||
$ hg commit -m bc | ||||
$ hg update -q 2 | ||||
$ hg merge -q --tool internal:local 1 | ||||
$ echo b >> x | ||||
$ hg commit -qm cb | ||||
Mads Kiilerich
|
r22672 | $ hg merge --config merge.preferancestor='!' | ||
Mads Kiilerich
|
r21169 | note: using 70008a2163f6 as ancestor of 0d355fdef312 and 4b8b546a3eef | ||
alternatively, use --config merge.preferancestor=b211bbc6eb3c | ||||
merging x | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ cat x | ||||
a | ||||
c | ||||
b | ||||
c | ||||
$ hg up -qC . | ||||
$ hg merge --config merge.preferancestor=b211bbc6eb3c | ||||
note: using b211bbc6eb3c as ancestor of 0d355fdef312 and 4b8b546a3eef | ||||
alternatively, use --config merge.preferancestor=70008a2163f6 | ||||
merging x | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ cat x | ||||
a | ||||
b | ||||
c | ||||
b | ||||
$ hg up -qC . | ||||
$ hg merge -v --config merge.preferancestor="*" | ||||
Mads Kiilerich
|
r21171 | note: merging 0d355fdef312+ and 4b8b546a3eef using bids from ancestors 70008a2163f6 and b211bbc6eb3c | ||
Mads Kiilerich
|
r21169 | |||
calculating bids for ancestor 70008a2163f6 | ||||
resolving manifests | ||||
calculating bids for ancestor b211bbc6eb3c | ||||
resolving manifests | ||||
auction for merging merge bids | ||||
Mads Kiilerich
|
r21172 | x: multiple bids for merge action: | ||
versions differ -> m | ||||
versions differ -> m | ||||
Mads Kiilerich
|
r21170 | x: ambiguous merge - picked m action | ||
Mads Kiilerich
|
r21169 | end of auction | ||
merging x | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ cat x | ||||
a | ||||
c | ||||
b | ||||
c | ||||
Mads Kiilerich
|
r22180 | Verify that the old context ancestor works with / despite preferancestor: | ||
$ hg log -r 'ancestor(head())' --config merge.preferancestor=1 -T '{rev}\n' | ||||
1 | ||||
$ hg log -r 'ancestor(head())' --config merge.preferancestor=2 -T '{rev}\n' | ||||
2 | ||||
$ hg log -r 'ancestor(head())' --config merge.preferancestor=3 -T '{rev}\n' | ||||
1 | ||||
Mads Kiilerich
|
r22671 | $ hg log -r 'ancestor(head())' --config merge.preferancestor='1337 * - 2' -T '{rev}\n' | ||
2 | ||||
Mads Kiilerich
|
r22180 | |||
Mads Kiilerich
|
r21169 | $ cd .. | ||