请注意,您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_variantsbcbc3
然而,这个补丁忽略的是它完全允许用户覆盖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-helpgit 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。
通过将实际的换行符嵌入到variantsin 中来修复此错误show_tool_names()。
在此期间,替换sort | uniq由sort -u.
为了防止将来出现回归,添加一个简单的测试来检查一些已知工具是否正确显示(让我们避免计算工具的总数以减少添加新工具时的维护负担,或者如果 ' --tool-help' 学习了额外的逻辑,比如隐藏工具取决于在当前平台上)。
[1] https://lore.kernel.org/git/CADtb9DyozjgAsdFYL8fFBEWmq7iz4=prZYVUdH9W-J5CKVS4OA@mail.gmail.com/