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

时间:2012-10-02 08:46:06

标签: git git-submodules

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

我的理解是git子模块不允许仅导入存储库中的特定路径,需要导入整个存储库。这是对的吗?

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

  1. 将A和B作为单独的存储库,并将B中的符号链接添加到A中的库目录。
  2. 使用库添加新的git存储库C,并将其作为A和B中的子模块导入。
  3. 第二种方法有哪些优点?在我看来,为小型库添加一个单独的存储库是一种过度杀伤,可能会给项目维护带来不必要的负担。有没有更好的方法来解决我的问题?

1 个答案:

答案 0 :(得分:5)

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

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

另一种方法是将控制系统的 外部的lib外部化到像Nexus这样的工件库中,然后留在项目中( s)只有引用到该库的正确版本才能获取。