假设project x是基础项目,project y依赖于x,projecty可能是projectx的插件,或者它是一个独立的应用程序,需要以其他方式使用projectx。
我一直认为y项目应该是超级项目,而x项目应该是y项目的子模块。
然而,在阅读时,我的想法似乎是颠倒的。在本文中,依赖项是超级项目,依赖代码(在本例中是插件)是子模块。那么,这是使用子模块的正确方法吗?

最佳答案

如果projecty可以在不了解projectx的情况下生存(可能是因为它是x的插件),那么它就不能是一个超级项目。
如果它需要x以某种方式完成,那么是的,它可能是一个超级项目,以便在其树中引用x(如true nature of submodules中所述)。
component-based approach中,真正的超级项目将是引用projecty和projectx的正确版本的第三个项目,以便记录整个项目工作所需的确切配置(即修订列表)。
操作添加了正确的问题:在哪里存储依赖关系(y对x)?
如果采用基于组件的方法并拥有projectz超级项目,而projecty依赖于projectx来构建,那么我们是否不将projectx作为子模块包含在projecty的存储库中,而只包含在projectz中?
这将意味着projecty不能独立构建,这使得它(由于缺乏雄辩)成为一种“隐含子模块”。
如果您只有两个组件,一个依赖于另一个,当然:您可以直接将projectx声明为projecty的子模块。
但是,如果projecty不能独立构建,那么它无论如何也不是一个“完整的”(就像“自主的”)项目。
因此,全局父级“projectz”在projecty之外存储依赖信息有其优点:
直接从projectz根目录保持每个模块路径更可见(而不是将projectx潜在地深埋在projecty中,使projecty客户机看不到依赖关系)
统一projectx版本(如果几个模块需要projectx,在projectz中引用一次,就可以清楚地宣传projectx的“一个正式版本”,所有其他模块都应该使用这个版本)

07-24 12:52