我的项目使用mercurial存储库,是在Linux下开发的。它还取决于我们希望与其他项目共享的“通用”库。 我目前正在考虑的解决方案是将库放在一个mercurial子库中,并按照建议here创建一个“瘦shell”存储库。
假设我的存储库看起来像这样:
project/
core/
common/
我不确定工作流程应该是什么样子。我什么时候应该承诺project
?我是在其上创建功能分支还是仅在子存储库中创建功能分支?如果新功能需要core
和common
中的向后兼容的更改,会发生什么情况?
任何额外的提示将不胜感激。
答案 0 :(得分:1)
我什么时候应该投入项目?
由于项目存储库应该只包含子存储库(并跟踪它们的修订版),因此当您检出核心或公共存储库的不同版本并且您永远需要时,您应该(并且只需)提交项目将它用于您的项目。
我是在其上创建功能分支还是仅在子存储库中创建功能分支?
您必须为要在其中实现该功能的项目仓库和仓库创建“功能”仓库。
如果您只分叉项目仓库,它仍会跟踪原始核心/公共仓库。 另一方面,您还需要将项目仓库分叉,以获得包含所有所需子目录的完整工作环境。
另一种方法是每个开发人员都拥有自己的项目仓库永久分支,并跟踪他当前正在处理的功能回购。
然后只为已更改的子存储库创建拉取请求。
当新功能要求核心版和普通版中的向后兼容性不变时会发生什么
这意味着您将在两个存储库中执行/ commit / push这些更改并更新项目shell repo中的跟踪版本(提交新的shell repo状态并将其推送)。
这会生成项目的工作版本。
当然,不起作用的是使用核心或公共存储库的不兼容版本。
听起来无论如何都应该争取普通回购的后向兼容性,因为它也可能用于其他项目。