将git的submodule.recurse配置选项设置为true有什么缺点?

Mic*_*urr 6 git git-submodules

这个问题有没有办法让git pull自动更新子模块?有一个接受的配置git的答案,如下所示:

git config --global submodule.recurse true
Run Code Online (Sandbox Code Playgroud)

就像对该答案的评论之一,我想知道为什么这不是git的默认行为; 更确切地说,设置此配置选项有哪些缺点?

Von*_*onC 5

提交046b482中引入了此选项,最初用于工作树操作命令(read-tree/ checkout/ reset

git grep/ fetch/ pull/ push紧随其后。
但是,如文档所述,与下面的其他命令不同,clone仍需要其自己的递归标志:git clone --recurse-submodules <URL> <directory>
请参阅最近的讨论

一旦引入,这就是设计决定,因为git clone可能太大。
也许我们需要重新考虑该决定,然后克隆子模块(如果submodule.recurse已设置)。

由于调用的子模块的数量/大小可能很大,因此,默认情况下,默认情况下,现在默认不递归地包含它们。

它们的主要缺点是可能需要递归地进入每个子模块(以及它们各自的子模块)而引入可能的时间开销。
如果您有很多,并且不需要全部,则最好不要选择该选项,并指定--recursive何时需要它。

但是,一个优势是避免在切换分支时看到“未跟踪的文件”,如本讨论中所示