mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
276e18adae
Such a 'keep' action will later be the preferred (non)action when there is multiple ancestors. It is thus very convenient to have it explicitly. The extra actions will only be emitted in the case where the local file has changed since the ancestor but the other hasn't. That is the symmetrical operation to a 'get' action. This will create more action tuples that not really serve a purpose. The number of actions will however have the number of changed files as upper bound and it should thus not increase the memory/cpu use significantly.
103 lines
2.9 KiB
Perl
103 lines
2.9 KiB
Perl
http://mercurial.selenic.com/bts/issue672
|
|
|
|
# 0-2-4
|
|
# \ \ \
|
|
# 1-3-5
|
|
#
|
|
# rename in #1, content change in #4.
|
|
|
|
$ hg init
|
|
|
|
$ touch 1
|
|
$ touch 2
|
|
$ hg commit -Am init # 0
|
|
adding 1
|
|
adding 2
|
|
|
|
$ hg rename 1 1a
|
|
$ hg commit -m rename # 1
|
|
|
|
$ hg co -C 0
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ echo unrelated >> 2
|
|
$ hg ci -m unrelated1 # 2
|
|
created new head
|
|
|
|
$ hg merge --debug 1
|
|
searching for copies back to rev 1
|
|
unmatched files in other:
|
|
1a
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
src: '1' -> dst: '1a'
|
|
checking for directory renames
|
|
resolving manifests
|
|
branchmerge: True, force: False, partial: False
|
|
ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a
|
|
1: other deleted -> r
|
|
1a: remote created -> g
|
|
2: keep -> k
|
|
removing 1
|
|
updating: 1 1/2 files (50.00%)
|
|
getting 1a
|
|
updating: 1a 2/2 files (100.00%)
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
|
|
$ hg ci -m merge1 # 3
|
|
|
|
$ hg co -C 2
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ echo hello >> 1
|
|
$ hg ci -m unrelated2 # 4
|
|
created new head
|
|
|
|
$ hg co -C 3
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg merge -y --debug 4
|
|
searching for copies back to rev 1
|
|
unmatched files in local:
|
|
1a
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
src: '1' -> dst: '1a' *
|
|
checking for directory renames
|
|
resolving manifests
|
|
branchmerge: True, force: False, partial: False
|
|
ancestor: c64f439569a9, local: e327dca35ac8+, remote: 746e9549ea96
|
|
1a: local copied/moved from 1 -> m
|
|
preserving 1a for resolve of 1a
|
|
updating: 1a 1/1 files (100.00%)
|
|
picked tool 'internal:merge' for 1a (binary False symlink False)
|
|
merging 1a and 1 to 1a
|
|
my 1a@e327dca35ac8+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
|
|
premerge successful
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
|
|
$ hg co -C 4
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg merge -y --debug 3
|
|
searching for copies back to rev 1
|
|
unmatched files in other:
|
|
1a
|
|
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
|
|
src: '1' -> dst: '1a' *
|
|
checking for directory renames
|
|
resolving manifests
|
|
branchmerge: True, force: False, partial: False
|
|
ancestor: c64f439569a9, local: 746e9549ea96+, remote: e327dca35ac8
|
|
1a: remote moved from 1 -> m
|
|
preserving 1 for resolve of 1a
|
|
removing 1
|
|
updating: 1a 1/1 files (100.00%)
|
|
picked tool 'internal:merge' for 1a (binary False symlink False)
|
|
merging 1 and 1a to 1a
|
|
my 1a@746e9549ea96+ other 1a@e327dca35ac8 ancestor 1@81f4b099af3d
|
|
premerge successful
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
|