2010-08-24 72 views
5

我现在正在使用Allfusion Harvest的15位开发团队中。由于可用的前端TortoiseHg和MercurialEclipse,我们对此并不满意,并且四处寻找我们已决定切换到Mercurial。15个开发者团队的良好Mercurial工作流程

我们目前正在使用一个十二年前的Harvest版本,我发现我们目前的工作流很难转化为Mercurial。我与ClearCase以往的经验,我们使用了类似的模式:

A A A 
| | | 
B C | 
| /| | 
C | E 
| |/ 
D E 
|/
E 

其中左主干是不稳定,中间是测试和右边是稳定。现在我没有任何问题在Mercurial中重新创建这个分支模型(在一个中央存储库中)。这个想法是,开发人员然后克隆这个存储库,从分支不稳定,做他们的工作,然后合并不稳定。在网上阅读我还没有看到Mercurial工作流程针对的团队多于三名开发人员,因此我不确定这是否是一个好的工作流程。

所以两个问题:

这是一个良好的工作模式?

您如何与Mercurial合作以及您的团队中有多少人?

编辑:由于问这个问题,我已经使用GitflowGithub flow。根据发布复杂性和团队规模,两者都很有用。当使用Mercurial时,我已经停止使用分支(除稳定/不稳定外),而是使用受Git影响的书签。

回答

5

在Fog Creek,我们使用类似的工作流程,但有一个主要区别。由于在Mercurial中并没有真正轻量级的分支(即使合并后命名分支保留其名称),我们倾向于为我们的分支使用多个存储库。我发现这样可以更容易地知道您正在处理的是哪个分支,并且还会使分支之间意外合并变得更加困难,因为您的每个分支都可能拥有自己的临时分支。

取而代之的是,我们使用了Stable,QA和Devel回购协议。特性工作进入Devel并合并到QA和Stable,而错误修复进入Stable和QA,并合并回Devel。

很多我们的开发人员也为自己的分支机构保留更长时间运行的项目,或者他们正在开发的任何项目可能会破坏别人的代码。

我们的一些开发人员将每个分支放在不同的目录中,因此他们明确地从一个切换到另一个。其他人则倾向于将所有三个合并为一个回购,使用remote-branches扩展来管理各种头部。

当我们使用基本的hg serve来承载我们的回购时,这确实给了我们一些麻烦,因为创建新的回购回购或重命名回购需要系统管理员。这是我们做到这一点的原因之一,因此任何人都可以在Kiln中创建分支回购。

如果Mercurial有一个更好的分支模型,并且有一些工作可以帮助解决这个问题,但这对我们很有用。

+0

那么你的QA部门检查质量保证回购的提示,并建立自己的二进制文件来测试? – moswald 2010-08-25 01:05:41

+0

取决于产品,但是,测试版本是从QA回购中删除的。 – tghw 2010-08-25 01:37:09

+0

谢谢,我尝试了工作流程,并注意到Mercurial迫使我执行强制推送,因为收件人存储库将使用上述工作流程获取多个头像。当我收到警告时,感觉工作流程有问题?不稳定,稳定和测试每个人都有一个头... – MdaG 2010-08-25 12:56:52

1
  • 就我所知,您的工作流程相当好。