git - 是否有应用 .gitattributes 的全局方法?

标签 git simulink binaryfiles gitattributes

我发现了一个很棒的 Git 功能,它将解压缩文件并在 diff 中使用未压缩的结果,使用 .gitattributes,以及对本地存储库配置或全局 git 配置的更改。 Simulink *.slx 文件就是这样的 - 它们基本上是 zip 压缩的 XML 文件(可能还添加了一些其他内容)。

但是,这需要我向每个需要此更新的存储库添加 .gitattributes - 及其配置。

需要的具体更改是:

  1. 将以下行添加到 .gitattributes:

    *.slx diff = slx
    
  2. 将以下行添加到本地存储库配置(一种方法:git config -e):

    [diff "slx"]
        textconv = unzip -c -a
    

问题:有没有办法通过全局配置文件或其他方法将相同的功能全局应用到任何存储库?

目标是,如果我在本地设置全局函数,Git 就会知道解压缩任何存储库中的任何 *.slx 文件。

最佳答案

编辑:LightCC found ,您应该能够将它们放入您的 home .git/config/attributes 或通过 core.attributesFile 设置的其他文件中。请注意,任何现有的 .gitattributes 条目都可以覆盖 core.attributesFile 中的任何设置。竞争条目的优先级是那些“靠近”文件的条目优先于那些“远离”文件的条目。例如,如果目录的 .gitattributes*.ext a=b,则这会覆盖顶级工作树目录 .gitattributes 设置 *.ext a=c,它覆盖 core.attributesFile *.ext a=d

简短的答案是否定的:您可以使用例如 git config 在您的(个人的、全局的).gitconfig 中定义 diff textconv 过滤器 --全局-e。但是,每个存储库必须有一个 .gitattributes

值得补充的是,在 .gitattributes 中定义属性(必须是每个存储库),但为它们定义驱动程序 - 无论它们是用于 diff、 merge 驱动程序的 textconv 驱动程序对于 git merge 或用于 checkin / checkout 的过滤器驱动程序,至少在我看来有点损坏。问题是 .gitattributes 文件会在 git clone 上自动复制,但驱动程序不会。

存在一个基本的安全问题,阻止 Git 在克隆上复制驱动程序,因此这是合理的。但这显然不是一个很好的情况。请注意通过自动更新每个存储库的配置来解决这个问题;您可以通过运行自己的命令(而不是 git)来使用相同类型的解决方案,该命令会调用 Git,同时还会对您的配置进行大惊小怪。

关于git - 是否有应用 .gitattributes 的全局方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56465606/

相关文章:

java - 如何写入/读取表示对象的二进制文件?

windows - 获取 git 中最后 2 个标签之间的提交列表 - 在 Windows 上 - 不知道标签

eclipse - 开始将 Eclipse GIT 与现有项目一起使用...项目文件已移动

git - 如何 pull 入非当前分支?

compilation - Objcopy,它如何制作二进制输出?

linux - 有什么办法可以直接修改二进制文件的SONAME吗?

git - Git 提交修改和 Git 提交新文件之间的区别

matlab - 工作区,.m脚本和Simulink模型之间的关系是什么,如何有效使用它们?

c - 这种技术会减少 MATLAB 实时研讨会编码器的编译时间吗?

c - 根据 2 级 C-mex S-Function 中的导入数据类型设置输出端口的 Simulink block 数