我发现了一个很棒的Git函数,它将使用.gitattributes解压缩文件并在差异中使用未压缩的结果,并对本地repo配置或全局git配置进行更改。 Simulink * .slx文件就是这样的-基本上,它们是zip压缩的XML文件(也许还有其他一些添加的东西)。
但是,这需要我向需要此更新的每个存储库添加.gitattributes-并且是配置。
所需的特定更改是:
将以下行添加到.gitattributes
:
*.slx diff = slx
将以下几行添加到本地存储库配置中(一种方法:git config -e
):
[diff "slx"]
textconv = unzip -c -a
目标是,如果我在本地设置全局函数,Git将知道解压缩任何存储库中的任何* .slx文件。
答案 0 :(得分:4)
编辑:作为LightCC found,您应该可以将它们放在您的家.git/config/attributes
或通过core.attributesFile
设置的其他文件中。请注意,任何现有的.gitattributes
条目都可以覆盖core.attributesFile
中的任何设置。竞争条目的优先级是那些“更接近”文件的条目会覆盖那些“更远离”文件的条目。例如,如果目录的.gitattributes
表示*.ext a=b
,则它将覆盖.gitattributes
的顶部工作树目录*.ext a=c
的设置,该设置将覆盖core.attributesFile
{{1} }。
简短的答案是“否”:您可以使用 *.ext a=d
在您的(个人,全球性).gitconfig
中定义diff textconv过滤器。但是,每个存储库必须有一个git config --global -e
。
值得补充的是,这种在.gitattributes
中定义属性的想法(必须是每个存储库),但是要为它们定义驱动程序-无论它们是diff的textconv驱动程序,还是{{1 }},或用于签入/签出的筛选器驱动程序-至少在我看来有点破损。问题是.gitattributes
文件会自动复制到git merge
上,但驱动程序不会。
存在一个基本的安全问题,该问题阻止Git将驱动程序复制到克隆上,因此 是合理的。但这显然不是一个好情况。请注意,git-lfs通过自动更新每个存储库配置来解决它;您可以通过运行自己的命令(而不是.gitattributes
)来使用相同的解决方案,该命令可以调用Git,同时还可以简化配置。