Merge branch 'km/mergetool-vimdiff-layout-fallback'

Variants of vimdiff learned to honor mergetool.<variant>.layout settings.

* km/mergetool-vimdiff-layout-fallback:
  mergetools: vimdiff: use correct tool's name when reading mergetool config
This commit is contained in:
Junio C Hamano
2024-02-27 16:04:32 -08:00
3 changed files with 26 additions and 10 deletions

View File

@ -45,14 +45,21 @@ mergetool.meld.useAutoMerge::
value of `false` avoids using `--auto-merge` altogether, and is the
default value.
mergetool.vimdiff.layout::
The vimdiff backend uses this variable to control how its split
windows appear. Applies even if you are using Neovim (`nvim`) or
gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section
ifndef::git-mergetool[]
in linkgit:git-mergetool[1].
mergetool.<vimdiff variant>.layout::
Configure the split window layout for vimdiff's `<variant>`, which is any of `vimdiff`,
`nvimdiff`, `gvimdiff`.
Upon launching `git mergetool` with `--tool=<variant>` (or without `--tool`
if `merge.tool` is configured as `<variant>`), Git will consult
`mergetool.<variant>.layout` to determine the tool's layout. If the
variant-specific configuration is not available, `vimdiff`'s is used as
fallback. If that too is not available, a default layout with 4 windows
will be used. To configure the layout, see the `BACKEND SPECIFIC HINTS`
ifdef::git-mergetool[]
section.
endif::[]
ifndef::git-mergetool[]
section in linkgit:git-mergetool[1].
endif::[]
for details.
mergetool.hideResolved::
During a merge, Git will automatically resolve as many conflicts as

View File

@ -177,7 +177,8 @@ Instead of `--tool=vimdiff`, you can also use one of these other variants:
When using these variants, in order to specify a custom layout you will have to
set configuration variables `mergetool.gvimdiff.layout` and
`mergetool.nvimdiff.layout` instead of `mergetool.vimdiff.layout`
`mergetool.nvimdiff.layout` instead of `mergetool.vimdiff.layout` (though the
latter will be used as fallback if the variant-specific one is not set).
In addition, for backwards compatibility with previous Git versions, you can
also append `1`, `2` or `3` to either `vimdiff` or any of the variants (ex:

View File

@ -371,9 +371,17 @@ diff_cmd_help () {
merge_cmd () {
layout=$(git config mergetool.vimdiff.layout)
TOOL=$1
case "$1" in
layout=$(git config "mergetool.$TOOL.layout")
# backward compatibility:
if test -z "$layout"
then
layout=$(git config mergetool.vimdiff.layout)
fi
case "$TOOL" in
*vimdiff)
if test -z "$layout"
then