Mercurial > public > mercurial-scm > hg
diff tests/test-merge-tools.t @ 32255:7e35d31b41fd
filemerge: add internal merge tool to dump files forcibly
Internal merge tool :dump implies premerge. Therefore, files aren't
dumped, if premerge runs successfully.
This undocumented behavior might confuse users, if they want to always
dump files. But just making :dump omit premerge might cause backward
compatibility issue for existing automation.
This patch adds new internal merge tool :forcedump, which works as
same as :dump, but omits premerge always.
Internal tools annotated with "nomerge" should merge "change and
delete" correctly, but _forcedump() can't. Therefore, it is annotated
with "mergeonly" to always omit premerge, even though it doesn't merge
files actually.
This patch also adds explanation about premerge to :dump, to clarify
how :dump actually works.
BTW, this patch specifies internal tools with "internal:" prefix in
newly added test scenario in test-merge-tools.t, even though this
prefix is already deprecated. This is only for similarity to other
tests in test-merge-tools.t.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sat, 13 May 2017 03:31:42 +0900 |
parents | 177742666abd |
children | 9bc36198338e |
line wrap: on
line diff
--- a/tests/test-merge-tools.t Sat May 13 03:28:36 2017 +0900 +++ b/tests/test-merge-tools.t Sat May 13 03:31:42 2017 +0900 @@ -671,6 +671,72 @@ space $ rm f.base f.local f.other +check that internal:dump doesn't dump files if premerge runs +successfully + + $ beforemerge + [merge-tools] + false.whatever= + true.priority=1 + true.executable=cat + # hg update -C 1 + $ hg merge -r 3 --config ui.merge=internal:dump + merging f + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + + $ aftermerge + # cat f + revision 1 + space + revision 3 + # hg stat + M f + # hg resolve --list + R f + +check that internal:forcedump dumps files, even if local and other can +be merged easily + + $ beforemerge + [merge-tools] + false.whatever= + true.priority=1 + true.executable=cat + # hg update -C 1 + $ hg merge -r 3 --config ui.merge=internal:forcedump + merging f + 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] + $ aftermerge + # cat f + revision 1 + space + # hg stat + M f + ? f.base + ? f.local + ? f.orig + ? f.other + # hg resolve --list + U f + + $ cat f.base + revision 0 + space + + $ cat f.local + revision 1 + space + + $ cat f.other + revision 0 + space + revision 3 + + $ rm -f f.base f.local f.other + ui.merge specifies internal:other but is overruled by pattern for false: $ beforemerge