.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 时没有错误出现。
到底是怎么回事?我的方法中有什么会导致问题吗?