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
% Show all commands except debug commands
add
addremove
annotate
archive
backout
bisect
branch
branches
bundle
cat
clone
commit
copy
diff
export
grep
heads
help
identify
import
incoming
init
locate
log
manifest
merge
outgoing
parents
paths
pull
push
recover
remove
rename
revert
rollback
root
serve
showconfig
status
tag
tags
tip
unbundle
update
verify
version
% Show all commands that start with "a"
add
addremove
annotate
archive
% Do not show debug commands if there are other candidates
diff
% Show debug commands if there are no other candidates
debugancestor
debugcheckstate
debugcomplete
debugconfig
debugdata
debugdate
debugfsinfo
debugindex
debugindexdot
debuginstall
debugrawcommit
debugrebuildstate
debugrename
debugsetparents
debugstate
debugwalk
% Do not show the alias of a debug command if there are other candidates
% (this should hide rawcommit)
recover
remove
rename
revert
rollback
root
% Show the alias of a debug command if there are no other candidates
rawcommit
% Show the global options
--config
--cwd
--debug
--debugger
--encoding
--encodingmode
--help
--lsprof
--noninteractive
--profile
--quiet
--repository
--time
--traceback
--verbose
--version
-R
-h
-q
-v
-y
% Show the options for the "serve" command
--accesslog
--address
--certificate
--config
--cwd
--daemon
--daemon-pipefds
--debug
--debugger
--encoding
--encodingmode
--errorlog
--help
--ipv6
--lsprof
--name
--noninteractive
--pid-file
--port
--prefix
--profile
--quiet
--repository
--stdio
--style
--templates
--time
--traceback
--verbose
--version
--webdir-conf
-6
-A
-E
-R
-a
-d
-h
-n
-p
-q
-t
-v
-y
% Show an error if we use --options with an ambiguous abbreviation
hg: command 's' is ambiguous:
serve showconfig status