diff options
| author | Junio C Hamano <gitster@pobox.com> | 2023-04-17 18:05:11 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2023-04-17 18:05:11 -0700 |
| commit | 9d8370d44547d69e0734e47bb1c38e7ccd3e5387 (patch) | |
| tree | 01064b081e8e6bc76487265cc349816197018824 /git-mergetool--lib.sh | |
| parent | d47ee0a5653441ae727e22b8985c517132c42d4c (diff) | |
| parent | 42943b950e12f2d3e56688ecef1b0502e162b436 (diff) | |
| download | git-9d8370d44547d69e0734e47bb1c38e7ccd3e5387.tar.xz | |
Merge branch 'tk/mergetool-gui-default-config'
"git mergetool" and "git difftool" learns a new configuration
guiDefault to optionally favor configured guitool over non-gui-tool
automatically when $DISPLAY is set.
* tk/mergetool-gui-default-config:
mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
Diffstat (limited to 'git-mergetool--lib.sh')
| -rw-r--r-- | git-mergetool--lib.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 9f99201bcc..1ff26170ff 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -97,7 +97,42 @@ merge_mode () { test "$TOOL_MODE" = merge } +get_gui_default () { + if diff_mode + then + GUI_DEFAULT_KEY="difftool.guiDefault" + else + GUI_DEFAULT_KEY="mergetool.guiDefault" + fi + GUI_DEFAULT_CONFIG_LCASE=$(git config --default false --get "$GUI_DEFAULT_KEY" | tr 'A-Z' 'a-z') + if test "$GUI_DEFAULT_CONFIG_LCASE" = "auto" + then + if test -n "$DISPLAY" + then + GUI_DEFAULT=true + else + GUI_DEFAULT=false + fi + else + GUI_DEFAULT=$(git config --default false --bool --get "$GUI_DEFAULT_KEY") + subshell_exit_status=$? + if test $subshell_exit_status -ne 0 + then + exit $subshell_exit_status + fi + fi + echo $GUI_DEFAULT +} + gui_mode () { + if test -z "$GIT_MERGETOOL_GUI" + then + GIT_MERGETOOL_GUI=$(get_gui_default) + if test $? -ne 0 + then + exit 2 + fi + fi test "$GIT_MERGETOOL_GUI" = true } @@ -467,6 +502,11 @@ get_merge_tool () { is_guessed=false # Check if a merge tool has been configured merge_tool=$(get_configured_merge_tool) + subshell_exit_status=$? + if test $subshell_exit_status -gt "1" + then + exit $subshell_exit_status + fi # Try to guess an appropriate merge tool if no tool has been set. if test -z "$merge_tool" then |
