Merge branch 'jk/difftool-command-not-found' into maint
"git difftool" by default ignores the error exit from the backend commands it spawns, because often they signal that they found differences by exiting with a non-zero status code just like "diff" does; the exit status codes 126 and above however are special in that they are used to signal that the command is not executable, does not exist, or killed by a signal. "git difftool" has been taught to notice these exit status codes. * jk/difftool-command-not-found: difftool: always honor fatal error exit codes
This commit is contained in:
commit
bde42f081e
@ -86,6 +86,13 @@ else
|
||||
do
|
||||
launch_merge_tool "$1" "$2" "$5"
|
||||
status=$?
|
||||
if test $status -ge 126
|
||||
then
|
||||
# Command not found (127), not executable (126) or
|
||||
# exited via a signal (>= 128).
|
||||
exit $status
|
||||
fi
|
||||
|
||||
if test "$status" != 0 &&
|
||||
test "$GIT_DIFFTOOL_TRUST_EXIT_CODE" = true
|
||||
then
|
||||
|
@ -124,6 +124,12 @@ test_expect_success PERL 'difftool stops on error with --trust-exit-code' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success PERL 'difftool honors exit status if command not found' '
|
||||
test_config difftool.nonexistent.cmd i-dont-exist &&
|
||||
test_config difftool.trustExitCode false &&
|
||||
test_must_fail git difftool -y -t nonexistent branch
|
||||
'
|
||||
|
||||
test_expect_success PERL 'difftool honors --gui' '
|
||||
difftool_test_setup &&
|
||||
test_config merge.tool bogus-tool &&
|
||||
|
Loading…
Reference in New Issue
Block a user