在我的办公室,我们正在从 Visual Source Safe(6.0!)过渡到 Mercurial,我正在尝试找出处理我们情况的最佳“Mercurial”方式。目前,在任何给定的项目存储库中,我们维护它的多个版本:即对于项目 A,我们有一个用于 ProjA-Dev、ProjA-Rel1 和 ProjA-Rel2 的 VSS 存储库(一个开发存储库和一个用于过去两个发布)。
就目前而言,(几乎)所有新工作都在开发存储库中执行,然后手动完成被认为有必要回滚到 Rel1 或 Rel2 的更改(文件从 VSS 签出到它们自己的工作目录,然后使用一些差异工具仅复制适当的更改)。到了某个时候,就认为有新版本出来了,所以克隆了dev repo,变成了Proj*-Rev1,之前的Proj*-Rev1变成了Proj*-Rev2,Proj*-Dev就这样继续下去好像什么都没发生一样。在我看来,必须有更好的方法在更现代的工具(如 Mercurial)中实现这一点。
我目前的想法是每个项目都应该有自己的存储库,并且 Dev/Rel1/Rel2 的区别最好由不同的命名分支处理。但是,我无法弄清楚/看到/环绕的是如何在这样的环境下完成我们当前的工作流程。如果我们遵循我们当前的工作流程,那么 dev-branch 中的工作将继续有增无减,并且某些更改(不是全部!)将回滚/回滚到 Rel 分支。我知道这可以通过 Mercurial 的移植/移植功能来实现,而 TortoiseHg 似乎还没有很好地支持它。而且,更重要的是,过去的答案似乎表明,最好的解决方案是不允许事情以1开始进入这种状态。
问题是,鉴于当前的工作流程,避免这种状态的最佳方法是什么?我已经阅读了很多关于 Mercurial 和分支的指南(包括在这里找到的很多很多回复),但还没有看到这个问题的明确答案。