merge: expand environment variables and ~/ in tool.executable

hgrc(5) already implies that this works, so we might as well support it.

Another approach would be to implement this in util.findexe(): that
would benefit other callers of findexe(), e.g. convert and anyone
calling the user's editor. But findexe() is really implemented in
both posix.py and windows.py, so this would make both of those modules
depend on util.py: not good. So keep it narrow and only for merge
tools.
This commit is contained in:
Greg Ward 2011-10-12 21:45:58 -04:00
parent 3e9b4998db
commit aeec456986
2 changed files with 26 additions and 1 deletions

View File

@ -34,7 +34,8 @@ def _findtool(ui, tool):
p = util.findexe(p + _toolstr(ui, tool, "regappend"))
if p:
return p
return util.findexe(_toolstr(ui, tool, "executable", tool))
exe = _toolstr(ui, tool, "executable", tool)
return util.findexe(util.expandpath(exe))
def _picktool(repo, ui, path, binary, symlink):
def check(tool, pat, symlink, binary):

View File

@ -244,6 +244,30 @@ and true.executable set to cat with path works:
# hg stat
M f
environment variables in true.executable are handled:
$ cat > $HGTMP/merge.sh <<EOF
> #!/bin/sh
> echo 'custom merge tool'
> EOF
$ chmod +x $HGTMP/merge.sh
$ domerge -r 2 --config merge-tools.true.executable='$HGTMP/merge.sh'
[merge-tools]
false.whatever=
true.priority=1
true.executable=cat
# hg update -C 1
# hg merge -r 2 --config merge-tools.true.executable=$HGTMP/merge.sh
merging f
custom merge tool
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
# cat f
revision 1
space
# hg stat
M f
Tool selection and merge-patterns
merge-patterns specifies new tool false: