当 diff-tool 的返回码非零时,有没有办法停止 `git diff-tool`

问题描述 投票:0回答:2

我知道

git config
选项
difftool.prompt true

但是,我想知道是否有办法在返回码非零时停止比较。我使用

vim
作为比较工具,如果我使用
:cq
退出,它将返回非零,但
git
的默认设置在获得非零返回代码时不会停止比较剩余文件。

我想这是有道理的,因为当文件不同时,某些工具会返回非零代码,并且大多数人不想在此时停止,但是,在我的情况下,只有当我

vim
遇到错误时,它才会返回非零或者如果我要求它这样做,在这些情况下我总是希望
git diff-tool
停止。

那么有没有办法将默认设置更改为在收到非零返回代码时停止?

git diff vimdiff difftool git-difftool
2个回答
3
投票

一次:

git difftool --trust-exit-code

永久:

git config difftool.trustExitCode true

请参阅文档:12


0
投票

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
)
(由 Junio C Hamano --
gitster
--
合并于 commit a87469c,2024 年 3 月 1 日)

git-difftool--helper
:荣誉
--trust-exit-code
--dir-diff

报道者:Jean-Rémy Falleri
签字人:Patrick Steinhardt

git-diff-tool(1) 的

--trust-exit-code
选项是通过 2b52123 引入的(“
difftool
:添加对
--trust-exit-code
的支持”,2014-10-26,Git v2.2.0-rc0 -- 合并)。
设置后,它使我们在比较多个文件时返回调用的 diff 工具的退出代码。
此补丁没有更改传递
--dir-diff
的代码路径,因为在这种情况下我们已经无条件返回了 diff 工具的退出代码。

一个月后,通过 c41d3fe 进行了更改(“

difftool--helper
:添加显式退出语句”,2014-11-20,Git v2.3.0-rc0 -- mergebatch #2 中列出),其中明确的
exit 0
添加到 git-difftool--helper.sh 的末尾。
虽然该提交的既定意图只是清理,但它的结果是我们现在在设置
--dir-diff
时忽略 diff 工具的退出代码。
因此,这种行为变化很可能是该补丁的意外副作用。

现在有两种方法可以解决这个问题:

  • 我们可以恢复原始行为,当
    --dir-diff
    被传递时,无条件返回 diffing 工具的退出代码。
  • 或者我们可以使
    --dir-diff
    案例尊重
    --trust-exit-code
    标志。

事实上,我们已经忽略退出代码 7 年了,这让我更倾向于后一种选择。
此外,在一种情况下尊重该标志而不是另一种情况会不必要地使用户界面变得更加复杂。

修复错误,以便我们也尊重

--trust-exit-code
的目录差异并相应地调整文档。

© www.soinside.com 2019 - 2024. All rights reserved.