Git 嵌套的子模块和依赖项

标签 git git-submodules

假设我有四个名为CoreABSuper 的项目。依赖树是这样的:

Super ---> Core
       |-> A -> Core
       |-> B -> Core

我希望每个项目都是独立的,也就是说,我希望能够自行 check out 和编译每个项目(当然每个项目都有其依赖项)。

我考虑过将每个项目映射到存储库,然后使用子模块引用依赖项,但我发现该方法存在以下问题:

  1. 在检查 Super 及其所有依赖项时,我最终得到了 Core 的三个副本。
  2. 由于子模块是完全独立的,这三个副本中的每一个都可能指向 Core 的不同修订版,这将是一团糟。

那么……我是不是漏掉了什么?我是不是误解了 git 子模块或滥用了它们?这个问题还有其他解决方案吗(除了求助于二进制依赖项之外)?

最佳答案

您刚刚发现 Git 子模块缺少覆盖的依赖项:

如果 Super 依赖于 Core,它对 Core 的依赖应该“覆盖”A 和 B 对 Core 的依赖。

模仿的唯一方法是按照您的方式创建您的 super 项目,
去除A和B的子模块Core。
(意思是 Super 现在依赖于 A' 和 B',A' 是没有核心的 A,B' 是没有核心的 B)

关于Git 嵌套的子模块和依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1419498/

相关文章:

java - 使用 git 子模块管理 sbt 依赖

git - 如何从我当前的提交中删除一个太大的文件

git - hg outgoing (hg out) 或 hg incoming (hg in) 的 git 等价物是什么?

git - 如何在 git 中添加可选子模块?

git - 如何制作浅的 git 子模块?

Git rebase 和子模块中的移动目录

git - 如何强制 NPM 与 master 从 repo 获取包的最后一次提交?

python - python3 中没有名为 copy_reg 的模块

git - 如何将 git 子模块恢复到它的提交版本?

git - 如何在 git 中显示作者贡献的统计信息?