1

背景

使用 smarty 模板时,您可以通过创建文件副本并添加字符串-USERMOD来覆盖文件,如下所示:

original_file.html
original_file-USERMOD.html

有没有办法在我的 .gitattributes 文件中定位这两个文件?

只针对第二种类型的文件很容易:

*-USERMOD* export-ignore

从字面上看,规则是这样的:
“如果有任何以 -USERMOD.original_extension 结尾的文件的副本,则忽略副本原始文件”

当然,我总是可以手动添加这些文件,但是自动化的解决方案会很好。

gitignore(5) 的手册页(由 gitattributes(5) 引用以解释模式匹配)说:

否则,Git 将模式视为适合 fnmatch(3) 使用并带有 FNM_PATHNAME 标志的 shell glob

据我所知,shell glob 不能满足我的需要。然而,最终目标是告诉 git 导出忽略 USERMOD 文件及其原件,因此任何解决此问题的解决方案都将被接受。

4

2 回答 2

0

您将不得不以某种方式编写脚本,我强烈建议您将其作为存档创建的一部分。最简单的可能是

USERMOD-aware-archive() {
        git ls-files '*-USERMOD*' \
        | sed 's/$/ export-ignore/;p;s/-USERMOD//' >.git/info/attributes
        git archive "$@"
}
于 2016-02-21T16:57:52.917 回答
0

在我的经验中:

original_file*.html

如果您不介意获取以下被忽略的文件,则可以解决问题:

“original_file[withABunchOfStuffAroundHere].html”

正因为如此,

*-USERMOD* export-ignore

可能是您的回购更具体的模式

于 2019-12-23T12:41:12.990 回答