假设我们有以下的(Visual Studio中)项目(简体):组织大型项目,善变
- 基LIB-1
- 基LIB-2
- 产品-1:取决于base-lib-1
- product-2:dependi纳克上基-LIB-1和基-LIB-2
- 产物-3:视基-LIB-1和基-LIB-2和用作一个组件产品-2
- 产品-4:像产品3
我想这将是一个好办法在一个或多个Mercurial存储库中组织此项目结构。我们目前使用Subversion并将依赖库作为外部参数包含在内。
现在,一种方法是将除产品-1之外的所有产品都放在一个存储库中,因为所有这些产品始终作为单个包一起发布。我会对这个解决方案感到最舒服,因为那时我会非常确定如何处理存储库。但如何在此方案中适合产品-1而不复制base-lib-1?
作为替代我想过使用,将这样的组织一些子库:
- 产品包装-A
- 基LIB-1
- 产品-1
- 产品封装-B
- 基-LIB-1
- 基-LIB-2
- 产物-2
- 产物-3
- 产物-4
这种方法的问题是我从来没有使用过subrepos,所以我不确定这个解决方案会出现什么缺陷。
例如,subrepos的行为与SVN外部类似,您可以决定是否始终使用每个subrepo的最新版本或固定版本?
如果您进行更改,subrepos的行为如何在base-lib-1和product-2在同一时间?那些由Mercurial处理的是同一步骤,还是你必须手动提交/推送/更新所有内容?在这种情况下base-lib-1的subrepo如何在product-package-A中表现?
如果我想开发一个新功能分支,需要在多个subrepos中进行更改,分支如何在这种情况下工作?我是否必须手动分支和合并每个存储库,还是由Mercurial处理?
使用subrepos组织大型项目还有其他缺陷吗?在Mercurial中处理大量依赖的大型项目的首选方式是什么?