Re: [PATCH v2] git gui: add directly calling merge tool from gitconfig
From: Junio C Hamano <hidden>
Date: 2024-08-28 17:08:21
"ToBoMi via GitGitGadget" [off-list ref] writes:
From: deboeto <redacted>
Use the same ident (human readable name plus e-mail address) you have on your Signed-off-by: line below for this "From: " in-body header.
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 config. New merge tools can be set up there without a source code change.
Even if you configure an unknown tool, it would not get any benefit
from what git-{diff,merge}tool--lib.sh gives the known diff/merge
backends, would it? Instead of a more thorough support for known
tools done in setup_tool(), an unknown tool would be handled by
setup_user_tool() in git-mergetool-lib.sh which gives somewhat
degraded support.
So "can be set up without" may be true, but giving an impression
that a tool that is set up like so would work just like a known tool
is misleading.
By the way, we do ask contributors to avoid overly long lines,
50-col limt is a bit overly short and makes the resulting text
harder to read than necessary.
Those options are used only by pure git in contrast to git gui. git calls the configured merge tools directly from the config while git Gui doesn't. With this change git gui can call merge tools configured in the gitconfig directly without a change in git gui source code. It needs a configured merge.tool and a configured mergetool.cmd config entry.
OK.
gitconfig example: [merge] tool = vscode [mergetool "vscode"] path = the/path/to/Code.exe cmd = \"Code.exe\" --wait --merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\" Without the mergetool.cmd configuration and an unsupported merge.tool entry, git gui behaves mainly as before this change and informs the user about an unsupported merge tool, but now also shows a hint to add a config entry for the tool in gitconfig. If a wrong mergetool.cmd is configured by accident it is beeing handled by git gui already. In this
"is beeing" -> "is being", but "it gets handled by Git GUI already" should be sufficient.
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.
Quote proper nouns for readability? E.g.
"Beyond Compare 3" and "Visual Studio Code" were ...
Thanks.