diff options
author | David Aguilar <davvid@gmail.com> | 2012-09-25 00:48:11 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-25 09:04:39 -0700 |
commit | a427ef7acc9d932d1c203dd2fae67f51c4b1d1e8 (patch) | |
tree | ec1f72cc31d37983ae461a9211c32f806fb381d9 /t/t7610-mergetool.sh | |
parent | Git 1.7.12 (diff) | |
download | tgif-a427ef7acc9d932d1c203dd2fae67f51c4b1d1e8.tar.xz |
mergetool--lib: Allow custom commands to override built-ins
Allow users to override the default commands provided by the
mergetools/* scriptlets.
Users occasionally run into problems where they expect to be
able to override the built-in tool names. The documentation
does not explicitly mention that built-ins cannot be overridden,
so it's easy to assume that it should work.
Lift this restriction so that built-in tools are handled the
same way as user-configured tools. Add tests to guarantee this
behavior.
A nice benefit of this change is that it protects users from
having future versions of git trump their custom configuration
with a new built-in tool.
C.f.:
http://stackoverflow.com/questions/7435002/mergetool-from-gitconfig-being-ignored
http://thread.gmane.org/gmane.comp.version-control.msysgit/13188
http://thread.gmane.org/gmane.comp.version-control.git/148267
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t7610-mergetool.sh')
-rwxr-xr-x | t/t7610-mergetool.sh | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh index f5e16fc7db..0348ed2fb7 100755 --- a/t/t7610-mergetool.sh +++ b/t/t7610-mergetool.sh @@ -471,4 +471,17 @@ test_expect_success 'file with no base' ' git reset --hard master >/dev/null 2>&1 ' +test_expect_success 'custom commands override built-ins' ' + git checkout -b test14 branch1 && + git config mergetool.defaults.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" && + git config mergetool.defaults.trustExitCode true && + test_must_fail git merge master && + git mergetool --no-prompt --tool defaults -- both && + echo master both added >expected && + test_cmp both expected && + git config --unset mergetool.defaults.cmd && + git config --unset mergetool.defaults.trustExitCode && + git reset --hard master >/dev/null 2>&1 +' + test_done |