具有mercurial子存储库的工作流程

时间:2012-03-23 18:17:58

标签: version-control mercurial subrepos

我的项目使用mercurial存储库,是在Linux下开发的。它还取决于我们希望与其他项目共享的“通用”库。 我目前正在考虑的解决方案是将库放在一个mercurial子库中,并按照建议here创建一个“瘦shell”存储库。

假设我的存储库看起来像这样:

project/
  core/
  common/

我不确定工作流程应该是什么样子。我什么时候应该承诺project?我是在其上创建功能分支还是仅在子存储库中创建功能分支?如果新功能需要corecommon中的向后兼容的更改,会发生什么情况?

任何额外的提示将不胜感激。

1 个答案:

答案 0 :(得分:1)

我什么时候应该投入项目?

由于项目存储库应该只包含子存储库(并跟踪它们的修订版),因此当您检出核心或公共存储库的不同版本并且您永远需要时,您应该(并且只需)提交项目将它用于您的项目。

我是在其上创建功能分支还是仅在子存储库中创建功能分支?

您必须为要在其中实现该功能的项目仓库和仓库创建“功能”仓库。

如果您只分叉项目仓库,它仍会跟踪原始核心/公共仓库。 另一方面,您还需要将项目仓库分叉,以获得包含所有所需子目录的完整工作环境。

另一种方法是每个开发人员都拥有自己的项目仓库永久分支,并跟踪他当前正在处理的功能回购。

然后只为已更改的子存储库创建拉取请求。

当新功能要求核心版和普通版中的向后兼容性不变时会发生什么

这意味着您将在两个存储库中执行/ commit / push这些更改并更新项目shell repo中的跟踪版本(提交新的shell repo状态并将其推送)。

这会生成项目的工作版本。

当然,不起作用的是使用核心或公共存储库的不兼容版本。

听起来无论如何都应该争取普通回购的后向兼容性,因为它也可能用于其他项目。