我的.gitattributes
文件是否可能影响子模块?
我对指定过滤器和涂抹/清洁很感兴趣,因此它会在子模块中检出时应用。
答案 0 :(得分:2)
否:如果要在子模块结帐时定义应用的内容过滤器驱动程序(涂抹/清理脚本),则需要在子模块存储库中存储的.gitattributes
中定义。
但是:如果您不想在子模块仓库中添加.gitattributes
(例如,因为您不拥有该仓库,那么您只需要包含它并想要申请在您的上下文中有意义的过滤器),您可以做的是:
初始化子模块(git submodule init
甚至git submodule update --init
):
这将在您的父代仓库中创建.git/modules/yourSubmodule
文件夹
在.git/modules/yourSubmodule/info/attributes
中复制您要为某些文件声明的属性(此处为前例,所有ruby文件)
*.rb filter=yourFilter
这将扮演.gitattributes
的角色(仅对子模块有效,但已定义并存储在parent_repo/.git/modules/
中)
这样,您可以定义子模块的属性,而无需在子模块repo本身中添加.gitattributes
。
它并非完全是&{39; .gitattributes
'您的父级仓库:在您的父仓库的.git/modules
文件夹中初始化子模块后添加的内容。
您可以存储" gitattributes"的内容。作为父仓库中的常规文件,但您必须编写一个能够初始化子模块的脚本并将该文件复制为.git/modules/yourSubmodule/info/attributes
文件。
我在我的项目中已经这样做了:请参阅此installation script作为示例。
修改.git/modules/yourSubmodule/config
以声明引用该脚本的涂抹或清洁过滤器。
[filter "yourFiler"]
smudge= yourScript1 %f
clean = yourScript2 %f
然后,如果您已经更新了子模块(git submodule update
),则运行
cd parentRepo/yourSubmodule
git checkout HEAD -- .
这将触发该子模块的过滤器脚本