git 如何判断哪个模块是另一个模块的子模块?

How to decide which module is a submodule of the other in git?

假设有一个模块 A 和一个测试模块 T
我想决定哪个应该是另一个的子模块。

直觉上,让 T 成为 A 的子模块对我来说是有意义的,因为它本身没有任何意义。

但是,例如我读到 here

... if the technological context allows for packaging and formal dependency management, you should absolutely go this route instead

请假设我们现在没有能力设置打包管道,因此需要使用子模块。

根据这个原理,将 A 视为一个包并为 T“安装”它是有意义的,这意味着 A 实际上是T.


这让我很困惑,我想知道这个用例的最佳实践,最好也知道如何决定“什么是什么的子模块”这一主要问题的经验法则。

您主要使用子模块来实现对依赖项的高度控制。考虑到 AT 的情况,A 肯定是子模块,因为它是 T 的依赖项。您更有可能希望坚持使用 A 作为子模块,以便您的测试项目 TA.

的特定版本为目标

此外,如果我的项目 A 是许多其他项目的子模块,那么对我来说更自然:这样每个项目都可以拉取 A 的版本它们兼容。

最后但同样重要的是,假设您想从零开始测试项目 T:如果 A 是一个子模块,您可以销毁 T 而不必担心任何事情。相反,如果 AT 作为子模块,您需要处理好它并重新链接新的测试项目。

关于经验法则,这是我的:如果 A 依赖于 BB 成为子模块。按照这个规则,可以单独开发依赖。