git子模块比符号链接有什么优势?

Jan*_*bel 3 git git-submodules

我有一个git存储库(A),其中包含我需要在第二个存储库(B)中重用的库代码.

我的理解是git子模块不允许仅导入存储库中的特定路径,需要导入整个存储库.它是否正确?

因此,我看到了两个问题的解决方案:

  1. 将A和B作为单独的存储库,并添加从B到A中的库目录的符号链接.
  2. 使用库添加新的git存储库C并将其作为A和B中的子模块导入.

第二种方法有哪些优点?在我看来,为小型库添加一个单独的存储库是一种过度杀伤,可能会给项目维护带来不必要的负担.有没有更好的方法来解决我的问题?

Von*_*onC 5

主要思想是构建可重复性:能够恢复在特定时间构建的内容的确切配置(即标签或SHA1的确切列表).

在该上下文中(重现构建的能力),子模块(和解决方案2)优于任何符号链接(它是目录内容的快捷方式,而不涉及特定版本).

另一种方法是外部化的lib,外面一个的控制系统,到像神器仓库的Nexus,并在您的项目(S)仅留下引用该库的正确版本来获取.