4

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

我的理解是 git submodule 不允许只导入存储库中的特定路径,需要导入整个存储库。它是否正确?

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

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

第二种方法的优点是什么?在我看来,为小型库添加单独的存储库是一种矫枉过正的做法,会给项目维护增加不必要的负担。有没有更好的方法来解决我的问题?

4

1 回答 1

6

主要思想是构建可重复性:恢复您在特定时间构建的确切配置(即标签或 SHA1 的确切列表)部分的能力。

在这种情况下(重现构建的能力),子模块(和解决方案 2)比任何符号链接(它是目录内容的快捷方式,不参考特定版本)更可取。

另一种选择是将源代码控制系统之外的库外部化到像Nexus这样的工件存储库中,并在您的项目中只留下对该库的正确版本的引用以获取。

于 2012-10-02T08:48:33.023 回答