任务特征的Mercurial分支模型

时间:2011-05-02 07:03:41

标签: mercurial branch

enter image description here

我的开发环境:Windows 7,TortoiseHg,ASP.NET 4.0 / MVC3

测试分支:测试服务器上的代码 Prod分支:生产服务器上的代码

这是我目前的分支模型。分支出每个任务(功能)的原因是因为某些功能变得更慢。因此,在上图中,任务1提前完成(变更集#5),并合并到测试分支进行测试。但是,由于原始请求的错误或修改,已经制定了变更集#10,#12。虽然任务2已经完成了#8的测试,但已经推到了#9。

我的问题是每次修改任务分支时(比如#10,#12),我必须进行另一次合并来测试分支(#11,#13),这使得图形非常混乱。

有什么方法可以解决这个问题吗?或者任何更好的分支模型?

3 个答案:

答案 0 :(得分:3)

听起来你真的想要实现功能分支策略。但是,根据您的图表,我认为您缺少一些步骤和/或正在合并错误的分支。从本质上讲,你应该有更多像4行开发,加上1代表所有功能分支。不幸的是,除了一个谈论Git和可行的分支策略here之外,我还没有找到一个漂亮的图表。但是,该图表更好地解释了您正在寻找的内容,即使您使用的是其他DVCS,例如Mercurial(我的收藏)。使用Steve Losh的Guide to Branching in MercurialHg Book,您应该能够实现适合您的功能强大的分支策略。史蒂夫的每一种方法都有优点/缺点。

而且,不,您不需要正确克隆到分支。如果您经常处理多个未完成的项目和/或为其他开发人员执行代码审查/测试,Mercurial已命名分支,允许您轻松地在分支之间切换。使用IIS进行任何类型的基于Web的开发时,命名分支更容易使用,因为事物不会移动,并且不同的版本可以继续使用IIS下的相同配置。

我必须说,但是,你给它的功能分支或任何名称几乎总是一个坏主意,因为运行时间过长的分支(比如一年,我已经看到了灾难性的结果)几乎不可能合并除非您经常(每天)管理功能分支与其父级之间的同步。这种类型的维护开销并不值得给您带来麻烦,您最好坚持使用发布分支进行基于主干的开发以修复错误,并修复代码以抽象生产使用和未完成工作的代码。

答案 1 :(得分:0)

当您想要处理新功能时,最好从test repo进行克隆。 mercurial中的分支应该保持不相关...想象一下你发布了v1.0版本并开始使用应用程序的v2.0(默认分支)。您将创建分支v1.0以使其更新并修复错误。

答案 2 :(得分:0)

您可以为每个分支使用单独的存储库。然后在最新的变更集上重新定义更改。这个可以减少合并次数。