git子模块相对于符号链接有哪些优势?

git子模块相对于符号链接有哪些优势?,git,git-submodules,Git,Git Submodules,我有一个git存储库(a),其中包含一个我需要在第二个存储库(B)中重用的库代码 我的理解是git子模块不允许只导入存储库中的特定路径,需要导入整个存储库。这是正确的吗 因此,我看到了两种解决问题的方法: 将A和B作为单独的存储库,并在A中添加从B到库目录的符号链接 在库中添加一个新的git存储库C,并将其作为a和B中的子模块导入 第二种方法的优点是什么?在我看来,为一个小型库添加一个单独的存储库是一种过分的做法,它会给项目维护增加不必要的负担。有没有更好的办法解决我的问题 主要思想是构建再现性

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

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

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

  • 将A和B作为单独的存储库,并在A中添加从B到库目录的符号链接
  • 在库中添加一个新的git存储库C,并将其作为a和B中的子模块导入

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

    主要思想是构建再现性:能够恢复特定时间用于构建的部分精确配置(即标签或SHA1的精确列表)

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


    另一种选择是在源代码控制系统之外将lib外部化到工件存储库中,如,并留在项目中只有对该库的正确版本的引用才能获取。

    站点问题:您知道是否有任何根本原因使得子模块无法从存储库中仅导入选定目录?或者这只是当前实现的一个限制?@JanWrobel a子模块本身就是git repo,子模块不支持稀疏签出()。git回购的最佳实践仍然是表示一个“代码单元”,而不是一个集合。