2

我的仓库中有这个配置:

echo '*.java diff=java' >> .gitattributes

当我这样做时,git diff ...我会得到预期的结果。

但是,我正在编写一个脚本来分析其他 git 存储库,所以我通常会这样做:

git --git-dir='/path/to/repo/.git' diff ...

我想做的是像这样运行脚本,并获得与存在属性相同的结果。我不想设置全局属性或将 .gitattributes 添加到我要分析的 git 项目中。我不介意类似的东西

git --git-dir='/path/to/repo/.git' diff --word-diff-regex=<java-rexeg> 

但我不知道如何获取 git 使用的 java regex。

4

1 回答 1

4

来自git help config

core.attributesfile

除了.gitattributes(per-directory) 和 .git/info/attributes 之外,git 还会在这个文件中查找属性(请参阅 参考资料gitattributes(5))。路径扩展的方式与 for 相同core.excludesfile。它的默认值为 $XDG_CONFIG_HOME/git/attributes。如果$XDG_CONFIG_HOME未设置或为空,$HOME/.config/git/attributes则改为使用。

换句话说,您可以在 中创建自己的属性文件$XDG_CONFIG_HOME/git/attributes,然后像这样传递XDG_CONFIG_HOME给您的 git 调用:

XDG_CONFIG_HOME=config_dir git --git-dir='/path/to/repo/.git' diff ...

因为您可以准确地控制XDG_CONFIG_HOME它,所以它不会是真正的全球性的——您可以完全在飞行中完成它。

或者,在其中创建全局 git 属性文件可能更简单$HOME/.config/git/attributes

于 2013-09-23T03:43:26.853 回答