For instance, if you set your diff/mergetool to meld and you don't have it installed:
git difftool
Viewing (1/1): 'blah'
Launch 'meld' [Y/n]? y
/home/ttanner/bin/meld[8]: /opt/swt/bin/meld: not found
echo $?
0
/home/ttanner/bin/meld
/home/ttanner/bin/meld[8]: /opt/swt/bin/meld: not found
echo $?
127
or
env DISPLAY=wibble git difftool
Viewing (1/1): blah'
Launch 'xxdiff' [Y/n]? y
xxdiff: cannot connect to X server wibble
echo $?
0
env DISPLAY=wibble xxdiff thisfile thatfile
xxdiff: cannot connect to X server wibble
echo $?
1
and this one (with DISPLAY unset because it was being run elsewhere)
git mergtool
Normal merge conflict for 'blah:
{local}: modified file
{remote}: modified file
Could not find ':' in DISPLAY: yeah, right
XIO: fatal IO error 73 (Connection reset by peer) on X server "server:66.0"
after 0 requests (0 known processed) with 0 events remaining. echo $?
0
which last looked like a successful merge to a script, because it returned 0.