git Blame 带有可选的ignorevsfile

ano*_*nol 30 git git-blame

我有大约 40 个 git 存储库,其中大多数都有一个.git-blame-ignore-revs用于与git blame. blame.ignorerevsfile=.git-blame-ignore-revs因此,我没有使用 本地配置,而是将其应用到我的全局git 配置中。

但是,少数没有此类文件的存储库会受到它的影响:git blame在它们上运行会导致fatal: could not open object name list: .git-blame-ignore-revs.

有没有办法告诉 git 读取此类文件(如果存在),否则忽略它?这将是理想的:设置简单,但如果不存在这样的文件也不引人注目。

注意:拥有可选 文件很有用的另一个原因.git-blame-ignore-revs是,几乎所有 git 存储库都是在没有这样的文件的情况下创建的,只有在稍后才会添加它。然而,当二分旧的提交时,我们最终可能会返回到文件存在之前的touch某个点,然后我们必须完成二分,然后再次删除它才能返回到 HEAD 提交。即使我对文件使用本地配置,这种极其烦人的情况仍然会发生。出于这个原因,我确实认为默认行为应该是忽略该文件(如果它不存在)。

phd*_*phd 15

有没有办法告诉 git 读取此类文件(如果存在),否则忽略它?

没有。要么使用

git config --local blame.ignoreRevsFile .git-blame-ignore-revs
Run Code Online (Sandbox Code Playgroud)

代替--global。或者使用

git config --local blame.ignoreRevsFile ""
Run Code Online (Sandbox Code Playgroud)

在那些不存在该文件的存储库中。空文件名意味着“不使用任何文件”

或者创建空.git-blame-ignore-revs文件。

更新。使用新的临时存储库进行测试:

git init test-git
cd test-git

git config --global blame.ignoreRevsFile test
git config --show-origin blame.ignoreRevsFile
file:/home/phd/.gitconfig       test

git config --local blame.ignoreRevsFile ""
git config --show-origin blame.ignoreRevsFile
file:.git/config
Run Code Online (Sandbox Code Playgroud)

更新2

git blame testfile
fatal: could not open object name list: test
Run Code Online (Sandbox Code Playgroud)

哎哟!

  • 显然,[相关补丁](https://lore.kernel.org/git/20210808174847.16590-1-noah.pendleton@gmail.com/)已在8月份向git提出,但从那以后我认为它没有进展很多。但类似的东西可能会出现在未来的 Git 版本中。 (4认同)
  • 如果有人看到 GitHub 问题/任何进一步的活动,请分享链接,以便我们跟踪。谢谢你! (2认同)