假设我有四个名为Core、A、B、Super 的项目。依赖树是这样的:
Super ---> Core
|-> A -> Core
|-> B -> Core
我希望每个项目都是独立的,也就是说,我希望能够自行 check out 和编译每个项目(当然每个项目都有其依赖项)。
我考虑过将每个项目映射到存储库,然后使用子模块引用依赖项,但我发现该方法存在以下问题:
- 在检查 Super 及其所有依赖项时,我最终得到了 Core 的三个副本。
- 由于子模块是完全独立的,这三个副本中的每一个都可能指向 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/