git/lib
Tobias Boesch 8ff65c7a53 git gui: add directly calling merge tool from configuration
git gui can open a merge tool when conflicts are detected (Right click
in the diff of the file with conflicts).
The merge tools that are allowed to use are hard coded into git gui.

If one wants to add a new merge tool it has to be added to git gui
through a source code change.
This is not convenient in comparison to how it works in git (without gui).

git itself has configuration options for a merge tools path and command
in the git configuration.
New merge tools can be set up there without a source code change.

Those options are used only by pure git in contrast to git gui. git calls
the configured merge tools directly from the configuration while git Gui
doesn't.

With this change git gui can call merge tools configured in the
configuration directly without a change in git gui source code.
It needs a configured "merge.tool" and a configured
"mergetool.<mergetool name>.cmd" configuration entry as shown in the
git-config manual page.

Configuration example:
[merge]
	tool = vscode
[mergetool "vscode"]
	cmd = \"the/path/to/Code.exe\" --wait --merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"

Without the "mergetool.<mergetool name>.cmd" entry and an unsupported
"merge.tool" entry, git gui behaves mainly as before this change and
informs the user about an unsupported merge tool. In addtition, it also
shows a hint to add a configuration entry to use the tool as an
unsupported tool with degraded support.

If a wrong "mergetool.<mergetool name>.cmd" is configured by accident,
it gets handled by git gui already. In this case git gui informs the
user that the merge tool couldn't be opened. This behavior is preserved
by this change and should not change.

"Beyond Compare 3" and "Visual Studio Code" were tested as manually
configured merge tools.

Signed-off-by: Tobias Boesch <tobias.boesch@miele.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
2024-09-14 15:20:16 +02:00
..
about.tcl git-gui: use themed tk widgets with Tk 8.5 2010-01-27 17:13:52 -08:00
blame.tcl git-gui: blame: prevent tool tips from sticking around after Command-Tab 2020-10-17 15:04:35 +05:30
branch.tcl git gui: fix branch name encoding error 2019-12-10 02:43:55 +05:30
branch_checkout.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
branch_create.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
branch_delete.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
branch_rename.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
browser.tcl git-gui: unicode file name support on windows 2016-10-06 09:21:50 +01:00
checkout_op.tcl git-gui: update status bar to track operations 2019-12-06 00:12:15 +05:30
choose_font.tcl git-gui: use themed tk widgets with Tk 8.5 2010-01-27 17:13:52 -08:00
choose_repository.tcl git-gui - remove obsolete Cygwin specific code 2023-08-24 16:19:57 +02:00
choose_rev.tcl git-gui: set suitable extended window manager hints. 2011-10-19 14:26:29 +01:00
chord.tcl git-gui: create a new namespace for chord script evaluation 2020-03-17 18:48:54 +05:30
class.tcl git-gui: set suitable extended window manager hints. 2011-10-19 14:26:29 +01:00
commit.tcl Revert "git-gui: remove lines starting with the comment character" 2021-03-04 13:53:27 +05:30
console.tcl git-gui: allow closing console window with Escape 2019-12-19 01:22:53 +05:30
database.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
date.tcl git-gui: Localize commit/author dates when displaying them 2007-09-10 01:54:16 -04:00
diff.tcl git-gui: support for diff3 conflict style 2019-10-04 03:26:15 +05:30
encoding.tcl doc: switch links to https 2024-05-05 16:49:00 +02:00
error.tcl git-gui i18n: mark string in lib/error.tcl for translation 2016-10-03 23:40:23 +01:00
git-gui.ico git-gui: Improve the application icon on Windows. 2007-12-02 23:05:10 -05:00
index.tcl Subject: git-gui: fix syntax error because of missing semicolon 2020-04-22 18:32:44 +05:30
line.tcl git-gui: theme the search and line-number entry fields on blame screen 2011-10-19 12:44:39 +01:00
logo.tcl git-gui: Refactor Henrik Nyh's logo into its own procedure 2007-10-10 01:12:15 -04:00
merge.tcl git-gui: add missing close bracket 2020-02-17 21:34:45 +05:30
mergetool.tcl git gui: add directly calling merge tool from configuration 2024-09-14 15:20:16 +02:00
option.tcl git-gui i18n: internationalize use of colon punctuation 2016-10-03 23:39:56 +01:00
remote.tcl git-gui: Mark 'All' in remote.tcl for translation 2016-10-20 11:13:03 +01:00
remote_add.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
remote_branch_delete.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
search.tcl git-gui: use a tristate to control the case mode in the searchbar 2011-10-21 22:28:23 +01:00
shortcut.tcl git-gui - use mkshortcut on Cygwin 2023-08-24 16:19:57 +02:00
spellcheck.tcl git-gui: correct spelling errors in comments 2013-11-15 20:44:08 +00:00
sshkey.tcl git-gui: search for all current SSH key types 2018-03-02 15:13:10 -08:00
status_bar.tcl git-gui: update status bar to track operations 2019-12-06 00:12:15 +05:30
themed.tcl git-gui: use gray background for inactive text widgets 2020-12-19 01:00:17 +05:30
tools.tcl git-gui: support for $FILENAMES in tool definitions 2016-10-03 23:27:14 +01:00
tools_dlg.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
transport.tcl git-gui: fix incorrect use of Tcl append command 2016-10-03 23:40:10 +01:00
win32.tcl git-gui: fix shortcut creation on cygwin 2010-07-30 10:05:26 +01:00
win32_shortcut.js git-gui: Use proper Windows shortcuts instead of bat files 2007-10-12 23:07:58 -04:00