From: Fernando Ramos Date: Tue, 25 Mar 2025 22:23:10 +0000 (+0100) Subject: mergetools: vimdiff: fix layout where REMOTE is the target X-Git-Tag: v2.50.0-rc0~131^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e2d74193c0e74666498004f5ef7a3473e8993063;p=thirdparty%2Fgit.git mergetools: vimdiff: fix layout where REMOTE is the target "mergetool.vimdiff.layout" is used to define the vim layout (ie. how windows, tabs and buffers are physically organized) when resolving conflicts. For example, if we set it to this: "(LOCAL,BASE,REMOTE)/MERGED" ...vim will open and show this layout: ------------------------------------------ | | | | | LOCAL | BASE | REMOTE | | | | | ------------------------------------------ | | | MERGED | | | ------------------------------------------ By default, whatever ends up been written to the "MERGED" window will become the file which conflict we are resolving. However, it is possible to use the "@" symbol to specify a different one. For example, if we use this slightly different version of the previously used string: "(LOCAL,BASE,@REMOTE)/MERGED" ...then the user should proceed to edit the contents of the top right window (instead of the bottom window) as *that* is what will become the conflicts free file once vim is closed. Before this commit, the "@" marker worked for all targets *except* for "REMOTE". In other words, these worked as expected: "(@LOCAL,BASE,REMOTE)/MERGED" "(LOCAL,@BASE,REMOTE)/MERGED" "(LOCAL,BASE,REMOTE)/@MERGED" ...but this didn't: "(LOCAL,BASE,@REMOTE)/MERGED" This commit fixes that. Reported-by: kawarimidoll Suggested-by: D. Ben Knoble Signed-off-by: Fernando Ramos Signed-off-by: Junio C Hamano --- diff --git a/mergetools/vimdiff b/mergetools/vimdiff index f8ad6b35d4..e536ab6bfe 100644 --- a/mergetools/vimdiff +++ b/mergetools/vimdiff @@ -305,6 +305,9 @@ gen_cmd () { elif echo "$LAYOUT" | grep @BASE >/dev/null then FINAL_TARGET="BASE" + elif echo "$LAYOUT" | grep @REMOTE >/dev/null + then + FINAL_TARGET="REMOTE" else FINAL_TARGET="MERGED" fi