在gitattributes文件的一行中使用多个过滤器是否存在固有问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在gitattributes文件的一行中使用多个过滤器是否存在固有问题?相关的知识,希望对你有一定的参考价值。

你能在.gitattributes文件中每行有多个git属性吗?如果是这样,他们会执行什么命令?

我一直在看到一些奇怪的行为,他们没有按照人们的预期方式执行。

这是我所指的一个.gitattributes文件的示例:

app*.php filter=infosafe_smudge_test filter=infosafe_smudge_test_staging filter=infosafe_clean_live filter=infosafe_clean_test filter=infosafe_clean_staging filter=infosafe_clean_test_staging filter=infosafe_global
/tests/config/framework.php filter=path_test
.gitattributes merge=ours

然后在我的repo的git配置文件中我有:

[filter "infosafe_clean_test"]
    clean = ../filters/sensitive_values_remover_test.sh
[filter "infosafe_clean_live"]
    clean = ../filters/sensitive_values_remover_live.sh
[filter "infosafe_clean_staging"]
    clean = ../filters/sensitive_values_remover_staging.sh
[filter "infosafe_clean_test_staging"]
    clean = ../filters/sensitive_values_remover_test_staging.sh
[filter "infosafe_smudge_test"]
    smudge = ../filters/sensitive_values_inserter_test.sh
[filter "infosafe_smudge_live"]
    smudge = ../filters/sensitive_values_inserter_live.sh
[filter "infosafe_smudge_staging"]
    smudge = ../filters/sensitive_values_inserter_staging.sh
[filter "infosafe_smudge_test_staging"]
    smudge = ../filters/sensitive_values_inserter_test_staging.sh

等等。

单个shell脚本只是带有多个-e参数的单行sed脚本,如:

#! /bin/sh -f 
sed \
-e 's|string to find|string to replace|' \
-e 's|string to find 2|string to replace 2| \
$1

当然它们是可设置的,权限是正常的。所有shell脚本都经过测试,因此我知道如果在命令行中使用它们,它们都可以工作。

一些shell脚本似乎被git调用。但不是所有的。我不明白。当我重新检查HEAD时没有错误。

到底是怎么回事?我的方法中有什么东西会导致问题吗?

答案

该死。每行不能有多个过滤器。

以上是关于在gitattributes文件的一行中使用多个过滤器是否存在固有问题?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在更新gitattributes后使用Git批量更改行尾吗?

当本地git repo执行时,GitHub不强制执行.gitattributes

记录.gitattributes 设置合并时使用本地文件无效的解决方案

text gitattributes(忽略生产环境中的文件或文件夹)

gitattributes手册

Git:在 gitattribute 中为整个文件夹指定一个 git 合并策略“我们的”(或者只是禁用特定文件夹上的合并错误?)