diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-04-18 04:05:11 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-04-18 04:05:11 +0300 |
commit | 9d8370d44547d69e0734e47bb1c38e7ccd3e5387 (patch) | |
tree | 01064b081e8e6bc76487265cc349816197018824 /builtin/difftool.c | |
parent | d47ee0a5653441ae727e22b8985c517132c42d4c (diff) | |
parent | 42943b950e12f2d3e56688ecef1b0502e162b436 (diff) |
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 'builtin/difftool.c')
-rw-r--r-- | builtin/difftool.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/builtin/difftool.c b/builtin/difftool.c index e010a21bfb..5ba524fa63 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -691,7 +691,7 @@ static int run_file_diff(int prompt, const char *prefix, int cmd_difftool(int argc, const char **argv, const char *prefix) { - int use_gui_tool = 0, dir_diff = 0, prompt = -1, symlinks = 0, + int use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0, tool_help = 0, no_index = 0; static char *difftool_cmd = NULL, *extcmd = NULL; struct option builtin_difftool_options[] = { @@ -741,13 +741,21 @@ int cmd_difftool(int argc, const char **argv, const char *prefix) } else if (dir_diff) die(_("options '%s' and '%s' cannot be used together"), "--dir-diff", "--no-index"); - die_for_incompatible_opt3(use_gui_tool, "--gui", + die_for_incompatible_opt3(use_gui_tool == 1, "--gui", !!difftool_cmd, "--tool", !!extcmd, "--extcmd"); - if (use_gui_tool) + /* + * Explicitly specified GUI option is forwarded to git-mergetool--lib.sh; + * empty or unset means "use the difftool.guiDefault config or default to + * false". + */ + if (use_gui_tool == 1) setenv("GIT_MERGETOOL_GUI", "true", 1); - else if (difftool_cmd) { + else if (use_gui_tool == 0) + setenv("GIT_MERGETOOL_GUI", "false", 1); + + if (difftool_cmd) { if (*difftool_cmd) setenv("GIT_DIFF_TOOL", difftool_cmd, 1); else |