git-commit-vandalism/builtin
Tao Klerks 42943b950e mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
When no merge.tool or diff.tool is configured or manually selected, the
selection of a default tool is sensitive to the DISPLAY variable; in a
GUI session a gui-specific tool will be proposed if found, and
otherwise a terminal-based one. This "GUI-optimizing" behavior is
important because a GUI can make a huge difference to a user's ability
to understand and correctly complete a non-trivial conflicting merge.

Some time ago the merge.guitool and diff.guitool config options were
introduced to enable users to configure both a GUI tool, and a non-GUI
tool (with fallback if no GUI tool configured), in the same environment.

Unfortunately, the --gui argument introduced to support the selection of
the guitool is still explicit. When using configured tools, there is no
equivalent of the no-tool-configured "propose a GUI tool if we are in a GUI
environment" behavior.

As proposed in <xmqqmtb8jsej.fsf@gitster.g>, introduce new configuration
options, difftool.guiDefault and mergetool.guiDefault, supporting a special
value "auto" which causes the corresponding tool or guitool to be selected
depending on the presence of a non-empty DISPLAY value. Also support "true"
to say "default to the guitool (unless --no-gui is passed on the
commandline)", and "false" as the previous default behavior when these new
configuration options are not specified.

Signed-off-by: Tao Klerks <tao@klerks.biz>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-04-05 21:03:29 -07:00
..
add.c add API: remove run_add_interactive() wrapper function 2023-02-06 15:03:34 -08:00
am.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
annotate.c
apply.c
archive.c parse-options: consistently allocate memory in fix_filename() 2023-03-06 13:14:45 -08:00
bisect.c Merge branch 'rj/bisect-already-used-branch' 2023-03-19 15:03:11 -07:00
blame.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
branch.c Merge branch 'rj/branch-copy-and-rename' into maint-2.39 2023-02-14 14:15:55 -08:00
bugreport.c built-ins: use free() not UNLEAK() if trivial, rm dead code 2022-11-21 12:32:48 +09:00
bundle.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
cat-file.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
check-attr.c attr: add flag --source to work with tree-ish 2023-01-14 08:49:55 -08:00
check-ignore.c cocci: apply "pending" index-compatibility to some "builtin/*.c" 2022-11-21 12:06:15 +09:00
check-mailmap.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
check-ref-format.c check-ref-format: fix trivial memory leak 2022-07-01 11:43:42 -07:00
checkout--worker.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
checkout-index.c cocci: apply "pending" index-compatibility to some "builtin/*.c" 2022-11-21 12:06:15 +09:00
checkout.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
clean.c Merge branch 'ab/various-leak-fixes' 2023-02-22 14:55:45 -08:00
clone.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
column.c
commit-graph.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
commit-tree.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
commit.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
config.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
count-objects.c for_each_object: mark unused callback parameters 2023-02-24 09:13:31 -08:00
credential-cache--daemon.c Merge branch 'en/header-cleanup' 2023-03-17 14:03:09 -07:00
credential-cache.c
credential-store.c
credential.c
describe.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
diagnose.c Merge branch 'ab/doc-synopsis-and-cmd-usage' 2022-10-28 11:26:54 -07:00
diff-files.c cocci: apply "pending" index-compatibility to some "builtin/*.c" 2022-11-21 12:06:15 +09:00
diff-index.c cocci: apply "pending" index-compatibility to some "builtin/*.c" 2022-11-21 12:06:15 +09:00
diff-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
diff.c Merge branch 'ab/various-leak-fixes' 2022-12-14 15:55:46 +09:00
difftool.c mergetool: new config guiDefault supports auto-toggling gui by DISPLAY 2023-04-05 21:03:29 -07:00
fast-export.c fast-export: drop unused parameter from anonymize_commit_message() 2023-03-22 15:37:09 -07:00
fast-import.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
fetch-pack.c Merge branch 'jk/fix-proto-downgrade-to-v0' 2023-03-28 10:51:52 -07:00
fetch.c Merge branch 'ew/fetch-no-write-fetch-head-fix' 2023-03-19 15:03:13 -07:00
fmt-merge-msg.c
for-each-ref.c
for-each-repo.c for-each-repo: interpolate repo path arguments 2022-11-14 22:39:25 -05:00
fsck.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
fsmonitor--daemon.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
gc.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
get-tar-commit-id.c
grep.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
hash-object.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
help.c Merge branch 'ab/doc-synopsis-and-cmd-usage' 2022-10-28 11:26:54 -07:00
hook.c hook: support a --to-stdin=<path> option 2023-02-08 12:50:03 -08:00
index-pack.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
init-db.c doc txt & -h consistency: add missing options 2022-10-13 09:32:57 -07:00
interpret-trailers.c doc txt & -h consistency: add missing options 2022-10-13 09:32:57 -07:00
log.c Merge branch 'jk/format-patch-ignore-noprefix' 2023-03-21 14:18:55 -07:00
ls-files.c Merge branch 'aj/ls-files-format-fix' 2023-03-21 14:18:55 -07:00
ls-remote.c Merge branch 'sg/parse-options-h-users' 2023-03-30 13:47:11 -07:00
ls-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
mailinfo.c
mailsplit.c
merge-base.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge-file.c merge-file: fix memory leaks on error path 2022-07-01 11:43:43 -07:00
merge-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge-ours.c cocci: apply "pending" index-compatibility to some "builtin/*.c" 2022-11-21 12:06:15 +09:00
merge-recursive.c
merge-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
mktag.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
mktree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
multi-pack-index.c multi-pack-index: avoid writing to global in option callback 2022-10-06 09:56:51 -07:00
mv.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
name-rev.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
notes.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
pack-objects.c Merge branch 'sg/parse-options-h-users' 2023-03-30 13:47:11 -07:00
pack-redundant.c Merge branch 'jk/really-deprecate-pack-redundant' 2023-04-04 14:28:29 -07:00
pack-refs.c doc txt & -h consistency: add missing options and labels 2022-10-13 09:32:56 -07:00
patch-id.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
prune-packed.c
prune.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
pull.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
push.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
range-diff.c diff: factor out add_diff_options() 2022-12-02 08:25:29 +09:00
read-tree.c Merge branch 'en/header-cleanup' 2023-03-17 14:03:09 -07:00
rebase.c Merge branch 'ah/rebase-merges-config' 2023-04-04 14:28:28 -07:00
receive-pack.c Merge branch 'sg/parse-options-h-users' 2023-03-30 13:47:11 -07:00
reflog.c treewide: include parse-options.h in source files 2023-03-20 11:26:47 -07:00
remote-ext.c convert trivial uses of strncmp() to skip_prefix() 2023-01-08 10:34:37 +09:00
remote-fd.c convert trivial uses of strncmp() to starts_with() 2023-01-08 10:34:35 +09:00
remote.c Merge branch 'rs/no-more-run-command-v' 2022-11-08 17:15:12 -05:00
repack.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
replace.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
rerere.c diff: mark unused parameters in callbacks 2022-12-13 22:16:23 +09:00
reset.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
rev-list.c Merge branch 'ew/fetch-hiderefs' 2023-03-17 14:03:10 -07:00
rev-parse.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
revert.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
rm.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
send-pack.c Merge branch 'sg/parse-options-h-users' 2023-03-30 13:47:11 -07:00
shortlog.c shortlog: implement --group=committer in terms of --group=<format> 2022-10-24 14:48:05 -07:00
show-branch.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
show-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
show-ref.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
sparse-checkout.c sparse-checkout: avoid using internal API of unpack-trees, take 2 2023-02-27 08:29:51 -08:00
stash.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
stripspace.c
submodule--helper.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
symbolic-ref.c Merge branch 'ab/doc-synopsis-and-cmd-usage' 2022-10-28 11:26:54 -07:00
tag.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
unpack-file.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
unpack-objects.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
update-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
update-ref.c
update-server-info.c doc txt & -h consistency: add missing options and labels 2022-10-13 09:32:56 -07:00
upload-archive.c doc txt & -h consistency: fix mismatching labels 2022-10-13 09:32:56 -07:00
upload-pack.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
var.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
verify-commit.c drop pure pass-through config callbacks 2023-02-27 08:00:39 -08:00
verify-pack.c doc txt & -h consistency: add or fix optional "--" syntax 2022-10-13 09:32:56 -07:00
verify-tag.c drop pure pass-through config callbacks 2023-02-27 08:00:39 -08:00
worktree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
write-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00