2011-05-02 80 views
2

enter image description here水银分支模型任务功能

我的开发ENV:Windows 7中,TortoiseHg,ASP.NET 4.0/MVC3

测试分支:测试服务器上的代码 PROD分支机构:生产服务器上的代码

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

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

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

回答

3

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

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

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

0

当您想要使用新功能时,最好从测试回购中制作克隆。 mercurial中的分支应该保持不相关...想象一下,你已经发布了v1.0,并开始在你的应用(默认分支)的v2.0上工作。您将创建分支v1.0,以便通过修复错误来更新它。

0

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