请注意,您mergetool.trustExitCode true
不仅可以申请vimdiff
,还可以申请nvimdiff
。
在 Git 2.29(2020 年第四季度)中,基于变体的“ git mergetool
” (man)vim
的现有后端已经过重构,然后nvim
添加了对“”的支持。
请参阅pudinha ( ) 的提交 1186897和提交 83bbf9b (pudinha
2020 年 7 月 29 日)。
(由Junio C Hamano 合并 -- gitster
--在提交 873fa13中,2020 年 8 月 17 日)
mergetools
: 添加对 nvimdiff (neovim) 系列的支持
签字人:pudinha
修复了在Git 2.30(2021 年第一季度)添加nvimdiff
支持时引入的回归。mergetool
请参阅Johannes Schindelin ( ) 的提交 12026f4和提交 6bc9082(2020 年 11 月 11 日)。(由Junio C Hamano 合并 -- --在d203add 提交中,2020 年 11 月 21 日)dscho
gitster
mergetool
:避免list_tool_variants
破坏用户定义的设置
签字人:约翰内斯·辛德林
在83bbf9b92ea8(“ mergetool--lib
:改进对 vimdiff 样式工具变体的支持”,2020-07-29,Git v2.29.0-rc0 --批次 #8中列出的合并)中,我们本着 Postel 定律的精神引入了一个功能:宽容在您接受的输入中。在这个特定的例子中,我们不仅希望允许,而且希望将其作为Beyond Compare 工具的名称。list_tool_variants
bc
bc3
然而,这个补丁忽略的是它完全允许用户覆盖mergetools/
.
但是现在我们去掉了尾随数字,用户给该工具的名称实际上可能不在由list_tool_variants
.
diff_cmd
因此,如果检测到用户定义的设置,让我们对and做同样的事情merge_cmd
:用普通版本覆盖它。
Git 2.30.1(2021 年第一季度)修复了 2.29 回归,其中 " git mergetool --tool-help
" ( man )无法列出所有可用工具。
请参阅Philippe Blain ( ) 的commit 80f5a16(2021 年 1 月 7 日)。(由Junio C Hamano 合并 -- --在提交 073552d中,2021 年 1 月 15 日)phil-blain
gitster
报告人:Philippe Blain
基于补丁程序:Johannes Sixt
签字人:Philippe Blain
提交83bbf9b(“ mergetool--lib
:改进对 vimdiff 样式工具变体的支持”,2020-07-29,Git v2.29.0-rc0 -批次 #8中列出的合并)在( man )和( man )的输出中引入了回归[1]。git mergetool --tool-help
git difftool --tool-help
在函数 ' show_tool_names
' in 中git-mergetool--lib.sh
,我们遍历支持mergetools
的及其变体并将它们累积在变量 ' variants
' 中,并用文字 ' \n
' 分隔它们。
然后代码使用 ' echo $variants
' 将这些 ' \n
' 转换为换行符,但这种行为不可移植,它恰好在某些 shell 中工作,例如 dash(1) 的 'echo' 内置函数。
对于 ' echo
' 不会将 ' \n
' 转换为换行符的 shell,最终结果是显示的唯一工具是现有变体(按字母顺序排列的最后一个变体除外),因为变体在 ' $variants
' 中由实际换行符分隔,因为几个 ' echo
' 来电mergetools/{bc,vimdiff}::list_tool_variants
。
通过将实际的换行符嵌入到variants
in 中来修复此错误show_tool_names()
。
在此期间,替换sort
| uniq
由sort -u
.
为了防止将来出现回归,添加一个简单的测试来检查一些已知工具是否正确显示(让我们避免计算工具的总数以减少添加新工具时的维护负担,或者如果 ' --tool-help
' 学习了额外的逻辑,比如隐藏工具取决于在当前平台上)。
[1] https://lore.kernel.org/git/CADtb9DyozjgAsdFYL8fFBEWmq7iz4=prZYVUdH9W-J5CKVS4OA@mail.gmail.com/