2019-12-10 02:24:31 +03:00
|
|
|
#chg-compatible
|
|
|
|
|
2018-01-23 23:09:16 +03:00
|
|
|
|
2014-03-02 21:25:19 +04:00
|
|
|
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'
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg up -qr'desc(0)'
|
2014-03-02 21:25:19 +04:00
|
|
|
$ echo '2 first change' > f2
|
2017-01-31 05:25:59 +03:00
|
|
|
$ mkdir d1
|
|
|
|
$ echo '0 base' > d1/f3
|
|
|
|
$ echo '0 base' > d1/f4
|
|
|
|
$ hg add -q d1
|
2014-03-02 21:25:19 +04:00
|
|
|
$ hg ci -qm '2 first change f2'
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg merge -qr 'desc(1)'
|
2017-01-31 05:25:59 +03:00
|
|
|
$ hg rm d1/f3
|
|
|
|
$ hg mv -q d1 d2
|
2014-03-02 21:25:19 +04:00
|
|
|
$ hg ci -m '3 merge'
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg up -qr'desc(2)'
|
|
|
|
$ hg merge -qr'desc(1)'
|
2014-03-02 21:25:19 +04:00
|
|
|
$ hg ci -qm '4 merge'
|
|
|
|
|
|
|
|
$ echo '5 second change' > f1
|
|
|
|
$ hg ci -m '5 second change f1'
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg up -r'desc(3)'
|
2017-01-31 05:25:59 +03:00
|
|
|
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
2014-03-02 21:25:19 +04:00
|
|
|
$ echo '6 second change' > f2
|
|
|
|
$ hg ci -m '6 second change f2'
|
|
|
|
|
|
|
|
$ hg log -G
|
2020-07-21 03:23:52 +03:00
|
|
|
@ commit: 6373bbfdae1d
|
2020-10-20 03:05:23 +03:00
|
|
|
│ user: test
|
|
|
|
│ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ summary: 6 second change f2
|
|
|
|
│
|
|
|
|
│ o commit: e673248094b1
|
|
|
|
│ │ user: test
|
|
|
|
│ │ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ │ summary: 5 second change f1
|
|
|
|
│ │
|
|
|
|
│ o commit: 177f58377c06
|
|
|
|
│ ├─╮ user: test
|
|
|
|
│ │ │ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ │ │ summary: 4 merge
|
|
|
|
│ │ │
|
|
|
|
o │ │ commit: c202c8af058d
|
|
|
|
╰─┬─╮ user: test
|
|
|
|
│ │ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ │ summary: 3 merge
|
|
|
|
│ │
|
|
|
|
│ o commit: d1d156401c1b
|
|
|
|
│ │ user: test
|
|
|
|
│ │ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ │ summary: 2 first change f2
|
|
|
|
│ │
|
|
|
|
o │ commit: 0f6b37dbe527
|
|
|
|
├─╯ user: test
|
|
|
|
│ date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
│ summary: 1 first change f1
|
|
|
|
│
|
|
|
|
o commit: 40494bf2444c
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: 0 base
|
2014-03-02 21:25:19 +04:00
|
|
|
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg merge -v --debug --tool internal:dump 'desc(5)' --config merge.preferancestor='!'
|
2020-07-18 03:23:54 +03:00
|
|
|
note: using d1d156401c1b as ancestor of 6373bbfdae1d and e673248094b1
|
|
|
|
alternatively, use --config merge.preferancestor=0f6b37dbe527
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d2/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
2014-03-02 21:25:19 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2020-07-18 03:23:54 +03:00
|
|
|
ancestor: d1d156401c1b, local: 6373bbfdae1d+, remote: e673248094b1
|
|
|
|
preserving f1 for resolve of f1
|
|
|
|
f1: versions differ -> m (premerge)
|
2021-04-19 22:21:39 +03:00
|
|
|
picktool() forcemerge toolpath internal:dump
|
2020-07-18 03:23:54 +03:00
|
|
|
picked tool ':dump' for f1 (binary False symlink False changedelete False)
|
|
|
|
merging f1
|
|
|
|
my f1@6373bbfdae1d+ other f1@e673248094b1 ancestor f1@d1d156401c1b
|
|
|
|
f1: versions differ -> m (merge)
|
2021-04-19 22:21:39 +03:00
|
|
|
picktool() forcemerge toolpath internal:dump
|
2020-07-18 03:23:54 +03:00
|
|
|
picked tool ':dump' for f1 (binary False symlink False changedelete False)
|
|
|
|
my f1@6373bbfdae1d+ other f1@e673248094b1 ancestor f1@d1d156401c1b
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
|
2014-03-02 21:25:19 +04:00
|
|
|
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
|
|
|
|
[1]
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
$ f --dump --recurse *
|
2020-07-18 03:23:54 +03:00
|
|
|
d2: directory with 1 files
|
2017-12-11 06:50:57 +03:00
|
|
|
d2/f4:
|
2017-01-31 05:25:59 +03:00
|
|
|
>>>
|
|
|
|
0 base
|
|
|
|
<<<
|
2017-01-31 05:20:07 +03:00
|
|
|
f1:
|
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
1 first change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2020-07-18 03:23:54 +03:00
|
|
|
f1.base:
|
2017-01-31 05:20:07 +03:00
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
0 base
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2020-07-18 03:23:54 +03:00
|
|
|
f1.local:
|
2017-01-31 05:20:07 +03:00
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
1 first change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2020-07-18 03:23:54 +03:00
|
|
|
f1.orig:
|
2017-01-31 05:20:07 +03:00
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
1 first change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2020-07-18 03:23:54 +03:00
|
|
|
f1.other:
|
2017-01-31 05:20:07 +03:00
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
5 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2020-07-18 03:23:54 +03:00
|
|
|
f2:
|
2017-01-31 05:20:07 +03:00
|
|
|
>>>
|
2020-07-18 03:23:54 +03:00
|
|
|
6 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2014-03-02 21:25:19 +04:00
|
|
|
|
2014-02-25 01:42:14 +04:00
|
|
|
$ hg up -qC .
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg merge -v --tool internal:dump 'desc(5)' --config merge.preferancestor="null 40663881 3b08d"
|
2020-07-18 03:23:54 +03:00
|
|
|
note: using d1d156401c1b as ancestor of 6373bbfdae1d and e673248094b1
|
|
|
|
alternatively, use --config merge.preferancestor=0f6b37dbe527
|
2014-02-25 01:42:14 +04:00
|
|
|
resolving manifests
|
2020-07-18 03:23:54 +03:00
|
|
|
merging f1
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
|
2014-02-25 01:42:14 +04:00
|
|
|
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
|
|
|
|
[1]
|
|
|
|
|
2014-02-28 05:52:32 +04:00
|
|
|
Redo merge with merge.preferancestor="*" to enable bid merge
|
|
|
|
|
|
|
|
$ rm f*
|
|
|
|
$ hg up -qC .
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg merge -v --debug --tool internal:dump 'desc(5)' --config merge.preferancestor="*"
|
2017-01-31 05:25:59 +03:00
|
|
|
note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
calculating bids for ancestor 0f6b37dbe527
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d2/f4
|
|
|
|
unmatched files in other:
|
|
|
|
d1/f3
|
|
|
|
d1/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
|
|
|
pending file src: 'd1/f3' -> dst: 'd2/f3'
|
|
|
|
pending file src: 'd1/f4' -> dst: 'd2/f4'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: 0f6b37dbe527, local: 6373bbfdae1d+, remote: e673248094b1
|
|
|
|
d2/f3: local directory rename - get from d1/f3 -> dg
|
|
|
|
d2/f4: local directory rename, both created -> m
|
2014-04-22 04:09:24 +04:00
|
|
|
f1: remote is newer -> g
|
|
|
|
f2: versions differ -> m
|
2014-02-28 05:52:32 +04:00
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
calculating bids for ancestor d1d156401c1b
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d2/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: d1d156401c1b, local: 6373bbfdae1d+, remote: e673248094b1
|
2014-04-22 04:10:25 +04:00
|
|
|
f1: versions differ -> m
|
2014-12-12 07:56:53 +03:00
|
|
|
f2: remote unchanged -> k
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
auction for merging merge bids
|
2017-01-31 05:25:59 +03:00
|
|
|
d2/f3: consensus for dg
|
|
|
|
d2/f4: consensus for m
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: picking 'get' action
|
|
|
|
f2: picking 'keep' action
|
|
|
|
end of auction
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
preserving d2/f4 for resolve of d2/f4
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: remote is newer -> g
|
|
|
|
getting f1
|
2014-12-04 01:03:20 +03:00
|
|
|
f2: remote unchanged -> k
|
2017-01-31 05:25:59 +03:00
|
|
|
d2/f3: local directory rename - get from d1/f3 -> dg
|
|
|
|
getting d1/f3 to d2/f3
|
|
|
|
d2/f4: local directory rename, both created -> m (premerge)
|
|
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
(branch merge, don't forget to commit)
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
$ f --dump --recurse *
|
|
|
|
d2: directory with 2 files
|
2017-12-11 06:50:57 +03:00
|
|
|
d2/f3:
|
2017-01-31 05:25:59 +03:00
|
|
|
>>>
|
|
|
|
0 base
|
|
|
|
<<<
|
2017-12-11 06:50:57 +03:00
|
|
|
d2/f4:
|
2017-01-31 05:25:59 +03:00
|
|
|
>>>
|
|
|
|
0 base
|
|
|
|
<<<
|
2017-01-31 05:20:07 +03:00
|
|
|
f1:
|
|
|
|
>>>
|
2014-02-28 05:52:32 +04:00
|
|
|
5 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
|
|
|
f2:
|
|
|
|
>>>
|
2014-02-28 05:52:32 +04:00
|
|
|
6 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
|
|
|
|
The other way around:
|
|
|
|
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg up -C -r'desc(5)'
|
2017-01-31 05:25:59 +03:00
|
|
|
4 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
$ hg merge -v --debug --config merge.preferancestor="*"
|
2017-01-31 05:25:59 +03:00
|
|
|
note: merging e673248094b1+ and 6373bbfdae1d using bids from ancestors 0f6b37dbe527 and d1d156401c1b
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
calculating bids for ancestor 0f6b37dbe527
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d1/f3
|
|
|
|
d1/f4
|
|
|
|
unmatched files in other:
|
|
|
|
d2/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
|
|
|
pending file src: 'd1/f3' -> dst: 'd2/f3'
|
|
|
|
pending file src: 'd1/f4' -> dst: 'd2/f4'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: 0f6b37dbe527, local: e673248094b1+, remote: 6373bbfdae1d
|
|
|
|
d2/f3: remote directory rename - move from d1/f3 -> dm
|
|
|
|
d2/f4: remote directory rename, both created -> m
|
2014-12-04 01:03:20 +03:00
|
|
|
f1: remote unchanged -> k
|
2014-04-22 04:09:24 +04:00
|
|
|
f2: versions differ -> m
|
2014-02-28 05:52:32 +04:00
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
calculating bids for ancestor d1d156401c1b
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in other:
|
|
|
|
d2/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: d1d156401c1b, local: e673248094b1+, remote: 6373bbfdae1d
|
|
|
|
d1/f3: other deleted -> r
|
|
|
|
d1/f4: other deleted -> r
|
|
|
|
d2/f4: remote created -> g
|
2014-04-22 04:10:25 +04:00
|
|
|
f1: versions differ -> m
|
2014-12-12 07:56:53 +03:00
|
|
|
f2: remote is newer -> g
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
auction for merging merge bids
|
2017-01-31 05:25:59 +03:00
|
|
|
d1/f3: consensus for r
|
|
|
|
d1/f4: consensus for r
|
|
|
|
d2/f3: consensus for dm
|
|
|
|
d2/f4: picking 'get' action
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: picking 'keep' action
|
|
|
|
f2: picking 'get' action
|
|
|
|
end of auction
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
d1/f3: other deleted -> r
|
|
|
|
removing d1/f3
|
|
|
|
d1/f4: other deleted -> r
|
|
|
|
removing d1/f4
|
|
|
|
d2/f4: remote created -> g
|
|
|
|
getting d2/f4
|
2014-02-28 05:52:32 +04:00
|
|
|
f2: remote is newer -> g
|
|
|
|
getting f2
|
2014-12-04 01:03:20 +03:00
|
|
|
f1: remote unchanged -> k
|
2017-01-31 05:25:59 +03:00
|
|
|
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
(branch merge, don't forget to commit)
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
$ f --dump --recurse *
|
|
|
|
d2: directory with 2 files
|
2017-12-11 06:50:57 +03:00
|
|
|
d2/f3:
|
2017-01-31 05:25:59 +03:00
|
|
|
>>>
|
|
|
|
0 base
|
|
|
|
<<<
|
2017-12-11 06:50:57 +03:00
|
|
|
d2/f4:
|
2017-01-31 05:25:59 +03:00
|
|
|
>>>
|
|
|
|
0 base
|
|
|
|
<<<
|
2017-01-31 05:20:07 +03:00
|
|
|
f1:
|
|
|
|
>>>
|
2014-02-28 05:52:32 +04:00
|
|
|
5 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
|
|
|
f2:
|
|
|
|
>>>
|
2014-02-28 05:52:32 +04:00
|
|
|
6 second change
|
2017-01-31 05:20:07 +03:00
|
|
|
<<<
|
2014-02-28 05:52:32 +04:00
|
|
|
|
2018-02-28 03:14:03 +03:00
|
|
|
Verify how the output looks and how verbose it is:
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
$ hg up -qC
|
2014-10-01 05:41:11 +04:00
|
|
|
$ hg merge
|
2017-01-31 05:25:59 +03:00
|
|
|
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
(branch merge, don't forget to commit)
|
|
|
|
|
2016-02-02 18:24:11 +03:00
|
|
|
$ hg up -qC tip
|
2014-10-01 05:41:11 +04:00
|
|
|
$ hg merge -v
|
2017-01-31 05:25:59 +03:00
|
|
|
note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
calculating bids for ancestor 0f6b37dbe527
|
|
|
|
resolving manifests
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
calculating bids for ancestor d1d156401c1b
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
|
|
|
|
auction for merging merge bids
|
2017-01-31 05:25:59 +03:00
|
|
|
d2/f3: consensus for dg
|
|
|
|
d2/f4: consensus for m
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: picking 'get' action
|
|
|
|
f2: picking 'keep' action
|
|
|
|
end of auction
|
|
|
|
|
|
|
|
getting f1
|
2017-01-31 05:25:59 +03:00
|
|
|
getting d1/f3 to d2/f3
|
|
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
(branch merge, don't forget to commit)
|
|
|
|
|
|
|
|
$ hg up -qC
|
|
|
|
$ hg merge -v --debug --config merge.preferancestor="*"
|
2017-01-31 05:25:59 +03:00
|
|
|
note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
calculating bids for ancestor 0f6b37dbe527
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d2/f4
|
|
|
|
unmatched files in other:
|
|
|
|
d1/f3
|
|
|
|
d1/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
|
|
|
pending file src: 'd1/f3' -> dst: 'd2/f3'
|
|
|
|
pending file src: 'd1/f4' -> dst: 'd2/f4'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: 0f6b37dbe527, local: 6373bbfdae1d+, remote: e673248094b1
|
|
|
|
d2/f3: local directory rename - get from d1/f3 -> dg
|
|
|
|
d2/f4: local directory rename, both created -> m
|
2014-04-22 04:09:24 +04:00
|
|
|
f1: remote is newer -> g
|
|
|
|
f2: versions differ -> m
|
2014-02-28 05:52:32 +04:00
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
calculating bids for ancestor d1d156401c1b
|
2020-10-21 01:18:01 +03:00
|
|
|
searching for copies back to c202c8af058d
|
2017-01-31 05:25:59 +03:00
|
|
|
unmatched files in local:
|
|
|
|
d2/f4
|
|
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
|
|
src: 'd1/f4' -> dst: 'd2/f4'
|
|
|
|
checking for directory renames
|
|
|
|
discovered dir src: 'd1/' -> dst: 'd2/'
|
2014-02-28 05:52:32 +04:00
|
|
|
resolving manifests
|
|
|
|
branchmerge: True, force: False, partial: False
|
2017-01-31 05:25:59 +03:00
|
|
|
ancestor: d1d156401c1b, local: 6373bbfdae1d+, remote: e673248094b1
|
2014-04-22 04:10:25 +04:00
|
|
|
f1: versions differ -> m
|
2014-12-12 07:56:53 +03:00
|
|
|
f2: remote unchanged -> k
|
2014-02-28 05:52:32 +04:00
|
|
|
|
|
|
|
auction for merging merge bids
|
2017-01-31 05:25:59 +03:00
|
|
|
d2/f3: consensus for dg
|
|
|
|
d2/f4: consensus for m
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: picking 'get' action
|
|
|
|
f2: picking 'keep' action
|
|
|
|
end of auction
|
|
|
|
|
2017-01-31 05:25:59 +03:00
|
|
|
preserving d2/f4 for resolve of d2/f4
|
2014-02-28 05:52:32 +04:00
|
|
|
f1: remote is newer -> g
|
|
|
|
getting f1
|
2014-12-04 01:03:20 +03:00
|
|
|
f2: remote unchanged -> k
|
2017-01-31 05:25:59 +03:00
|
|
|
d2/f3: local directory rename - get from d1/f3 -> dg
|
|
|
|
getting d1/f3 to d2/f3
|
|
|
|
d2/f4: local directory rename, both created -> m (premerge)
|
|
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2014-02-28 05:52:32 +04:00
|
|
|
(branch merge, don't forget to commit)
|
|
|
|
|
2014-03-02 21:25:19 +04:00
|
|
|
$ cd ..
|
2014-04-21 22:18:42 +04:00
|
|
|
|
|
|
|
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
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg update -q 'desc(a)'
|
2014-04-21 22:18:42 +04:00
|
|
|
$ echo b >> x
|
|
|
|
$ hg commit -m b
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg update -q 'desc(a)'
|
2014-04-21 22:18:42 +04:00
|
|
|
$ echo c >> x
|
|
|
|
$ hg commit -qm c
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg update -q 'desc(b)'
|
|
|
|
$ hg merge -q --tool internal:local 'desc(c)'
|
2014-04-21 22:18:42 +04:00
|
|
|
$ echo c >> x
|
|
|
|
$ hg commit -m bc
|
2020-10-08 21:06:31 +03:00
|
|
|
$ hg update -q b211bbc6eb3cb30e4cbf0ad2d34159554dfb4ec8
|
|
|
|
$ hg merge -q --tool internal:local 70008a2163f6ed1dec3130b2fd23f815019a6c85
|
2014-04-21 22:18:42 +04:00
|
|
|
$ echo b >> x
|
|
|
|
$ hg commit -qm cb
|
|
|
|
|
2014-10-01 05:41:11 +04:00
|
|
|
$ hg merge --config merge.preferancestor='!'
|
2020-07-18 03:23:54 +03:00
|
|
|
note: using b211bbc6eb3c as ancestor of 0d355fdef312 and 4b8b546a3eef
|
|
|
|
alternatively, use --config merge.preferancestor=70008a2163f6
|
2014-04-21 22:18:42 +04:00
|
|
|
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
|
2020-07-18 03:23:54 +03:00
|
|
|
b
|
2014-04-21 22:18:42 +04:00
|
|
|
|
|
|
|
$ 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="*"
|
2014-04-18 15:33:20 +04:00
|
|
|
note: merging 0d355fdef312+ and 4b8b546a3eef using bids from ancestors 70008a2163f6 and b211bbc6eb3c
|
2014-04-21 22:18:42 +04:00
|
|
|
|
|
|
|
calculating bids for ancestor 70008a2163f6
|
|
|
|
resolving manifests
|
|
|
|
|
|
|
|
calculating bids for ancestor b211bbc6eb3c
|
|
|
|
resolving manifests
|
|
|
|
|
|
|
|
auction for merging merge bids
|
2014-04-21 22:24:54 +04:00
|
|
|
x: multiple bids for merge action:
|
|
|
|
versions differ -> m
|
|
|
|
versions differ -> m
|
2014-04-21 22:22:14 +04:00
|
|
|
x: ambiguous merge - picked m action
|
2014-04-21 22:18:42 +04:00
|
|
|
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
|
|
|
|
|
2019-03-15 06:07:05 +03:00
|
|
|
merge.preferancestor does not affect revsets
|
2014-08-15 04:46:44 +04:00
|
|
|
|
2020-10-08 06:58:22 +03:00
|
|
|
$ hg log -r 'ancestor(head())' --config merge.preferancestor=1 -T '{node}\n'
|
|
|
|
b211bbc6eb3cb30e4cbf0ad2d34159554dfb4ec8
|
|
|
|
$ hg log -r 'ancestor(head())' --config merge.preferancestor=2 -T '{node}\n'
|
|
|
|
b211bbc6eb3cb30e4cbf0ad2d34159554dfb4ec8
|
|
|
|
$ hg log -r 'ancestor(head())' --config merge.preferancestor=3 -T '{node}\n'
|
|
|
|
b211bbc6eb3cb30e4cbf0ad2d34159554dfb4ec8
|
|
|
|
$ hg log -r 'ancestor(head())' --config merge.preferancestor='1337 * - 2' -T '{node}\n'
|
|
|
|
b211bbc6eb3cb30e4cbf0ad2d34159554dfb4ec8
|
2014-08-15 04:46:44 +04:00
|
|
|
|
2014-04-21 22:18:42 +04:00
|
|
|
$ cd ..
|