merge: allow smarter tool configuration
Add [merge-tool] hgrc section with:
<tool>.executable = name or path (<tool>)
<tool>.args = args with $local/base/other/output ($local $base $other)
<tool>.priority = priority (default 0)
<tool>.binary = handles binary (False)
<tool>.symlink = handles symlinks (False)
<tool>.checkconflict = check for conflict markers (False)
<tool>.premerge = try internal simplemerge (True if not binary or symlink)
Four built-in tools: internal:{merge,local,other,fail}
Add [merge-patterns] section of the form:
<pattern> = <tool>
Priority of settings is:
HGMERGE
merge-patterns
ui:merge
merge-tools by priority
hgmerge, if it can be found
Changes:
unsuccessful merges leave .orig files
adding 1
adding 2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
resolving manifests
overwrite None partial False
ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
searching for copies back to rev 1
unmatched files in other:
1a
all copies found (* = to merge, ! = divergent):
1a -> 1
checking for directory renames
1: other deleted -> r
1a: remote created -> g
removing 1
getting 1a
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
resolving manifests
overwrite None partial False
ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
searching for copies back to rev 1
unmatched files in local:
1a
all copies found (* = to merge, ! = divergent):
1a -> 1 *
checking for directory renames
1a: local moved to 1 -> m
picked tool 'internal:merge' for 1a (binary False symlink False)
merging 1a and 1
my 1a@ac7575e3c052+ 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)
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
resolving manifests
overwrite None partial False
ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
searching for copies back to rev 1
unmatched files in other:
1a
all copies found (* = to merge, ! = divergent):
1a -> 1 *
checking for directory renames
1: remote moved to 1a -> m
copying 1 to 1a
picked tool 'internal:merge' for 1 (binary False symlink False)
merging 1 and 1a
my 1@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
premerge successful
removing 1
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)