我知道
git config
选项 difftool.prompt true
但是,我想知道是否有办法在返回码非零时停止比较。我使用
vim
作为比较工具,如果我使用 :cq
退出,它将返回非零,但 git
的默认设置在获得非零返回代码时不会停止比较剩余文件。
我想这是有道理的,因为当文件不同时,某些工具会返回非零代码,并且大多数人不想在此时停止,但是,在我的情况下,只有当我
vim
遇到错误时,它才会返回非零或者如果我要求它这样做,在这些情况下我总是希望 git diff-tool
停止。
那么有没有办法将默认设置更改为在收到非零返回代码时停止?
difftool.trustExitCode
现在也可以与 git difftool --dir-diff
一起使用。
使用 Git 2.45(2024 年第 2 季度),第 3 批,“
git difftool --dir-diff
”(man) 学会了尊重 --trust-exit-code
选项;它过去总是以 0 退出并表示成功。
请参阅提交 eb84c8b(2024 年 2 月 20 日),作者:Patrick Steinhardt (
pks-t
)。gitster
-- 合并于 commit a87469c,2024 年 3 月 1 日)
:荣誉git-difftool--helper
与--trust-exit-code
--dir-diff
报道者:Jean-Rémy Falleri
签字人:Patrick Steinhardt
git-diff-tool(1) 的
选项是通过 2b52123 引入的(“--trust-exit-code
:添加对difftool
的支持”,2014-10-26,Git v2.2.0-rc0 -- 合并)。--trust-exit-code
设置后,它使我们在比较多个文件时返回调用的 diff 工具的退出代码。
此补丁没有更改传递的代码路径,因为在这种情况下我们已经无条件返回了 diff 工具的退出代码。--dir-diff
一个月后,通过 c41d3fe 进行了更改(“
:添加显式退出语句”,2014-11-20,Git v2.3.0-rc0 -- merge 在 batch #2 中列出),其中明确的difftool--helper
添加到 git-difftool--helper.sh 的末尾。exit 0
虽然该提交的既定意图只是清理,但它的结果是我们现在在设置时忽略 diff 工具的退出代码。--dir-diff
因此,这种行为变化很可能是该补丁的意外副作用。现在有两种方法可以解决这个问题:
- 我们可以恢复原始行为,当
被传递时,无条件返回 diffing 工具的退出代码。--dir-diff
- 或者我们可以使
案例尊重--dir-diff
标志。--trust-exit-code
事实上,我们已经忽略退出代码 7 年了,这让我更倾向于后一种选择。
此外,在一种情况下尊重该标志而不是另一种情况会不必要地使用户界面变得更加复杂。修复错误,以便我们也尊重
的目录差异并相应地调整文档。--trust-exit-code