提供路径时,Git diff会忽略textconv

时间:2018-09-06 09:34:22

标签: git tortoisegit git-diff

我已经设置了git diff,当在二进制文件上调用它时,它将使用自定义程序作为textconv,该程序在.gitconfig文件中指定。看起来像这样

[diff "file"]
    textconv = python "'/path/to/program.py'"
    xfuncname = .*name=.*
[core]
    attributesfile = ~/.gitattributes

以及我拥有的.gitattributes文件中

*.file diff=file

如果将其应用于我的git repo和终端中,则可以正常工作。但是,我的公司使用TortoiseGit作为git的前端,它带来了自己的diff工具,而我无法使用textconv选项。为了查看差异,我提供了类似的命令

cmd /K git diff %base %mine

输出将是

diff --git "a/path/in/repo.file" "b/temporary/path/out/of/repo.file"
index e4ab82c..3c0f4d7 100644
Binary files "a/path/in/repo.file" and "b/temporary/path/out/of/repo.file" differ

通常git会将textconv应用于二进制文件,并且如果提供的是“ HEAD”而不是“%base”,那么它将正常工作。我怀疑git就像使用--no-index调用一样运行,并且忽略了.gitattributes文件,因此现在不必应用textconv了。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用--textconv选项强制进行textconv转换:

cmd /K git diff --textconv %base %mine