在我的办公室,我们正在从Visual Source Safe(6.0!)过渡到Mercurial,并且我正在设法处理我们处境的最佳“Mercurial”方式。目前,在任何给定的项目存储库中,我们都维护了它的多个版本:即对于项目A,我们有ProjA-Dev,ProjA-Rel1和ProjA-Rel2的VSS回购(一个dev回购和过去两年版本)。现在看来,几乎所有新工作都在dev回购中进行,那么被认为需要回滚到Rel1或Rel2的更改是手动完成的(文件从VSS签出到他们的自己的工作目录,然后使用一些diff工具只复制适当的更改)。在某些时候,它被认为会发布一个新版本,所以dev repo被克隆,并且它变成了Proj * -Rev1,并且之前的Proj * -Rev1变成了Proj * -Rev2,并且Proj * -Dev只是继续仿佛什么也没有发生。在我看来,必须有更好的方式来完成这个更现代的工具,如Mercurial。维护开发/发布分支的Mercurial最佳实践?
我目前的想法是,每个项目应该有自己的存储库,Dev/Rel1/Rel2的区别最好由不同的命名分支来处理。然而,我无法弄清楚/看到/包裹我的头是如何在这样的环境下完成我们当前的工作流程。如果我们遵循我们当前的工作流程,那么开发分支中的工作仍会继续下去,并且某些更改(并非全部!)会回滚到Rel分支。我知道这可以通过Mercurial的移植/移植功能来完成,但它似乎还没有在TortoiseHg中得到很好的支持。而且,更重要的是,过去的回答似乎表明,最好的解决办法是不让事情进入这种状态,以1开头。
问题是,鉴于当前工作流程,避免这种状态的最佳方法是什么?我已经阅读了许多有关Mercurial和分支的指南(包括许多在这里找到的答案),但没有看到这个问题的明确答案。
处理这个问题的一个概念是促销组,其中dev/test/rel周期可以被认为是与正常'特征集'分支类型正交的质量维(相同代码'叶') 。我对Mercurial不熟悉,所以不能直接帮忙。例如http://www.ericsink.com/scm/scm_branches.html – StuartLC
为什么DEV中的东西不会被发布?我并不是想成为一个愚蠢的人,只是理解这个推理。如果因为某个功能未完成,那么也许应该在其自己的“分支”(不一定是“命名分支”)上完成该工作。我认为关键在于功能分支在DVCS中往往很自然地发生,所以除非有人故意将未完成的工作推给DEV,否则DEV中不应该有太多不移动到RELEASE的东西。 –