QA如何测试代码并与mercurial中的稳定分支合并?

est*_*r h 9 mercurial branching-and-merging

我的开发团队刚刚开始使用Mercurial,我们对以下几点感到困惑:

我们是一个php webdev团队.

我们有3个开发人员.我们现在正在做的大部分是一个非常新产品的错误修正.还做了一些新的功能开发.

我们有2个QA人员.必须先测试每个错误修复和功能,然后才能生效.

到目前为止,每个开发人员都有自己的存储库 我们有一个名为WebDev的中央服务器,它有自己的回购.开发人员从WebDev获取,然后进行一些更改(即修复错误),然后推送到Webdev.然后,QA测试人员将测试中央服务器上的代码(因此测试WebDev中的代码),如果有效,他会将该代码推送到我们的生产服务器.

这不能很好地工作,因为......当Developer-1(dev-1)修复bug并推送到WebDev时会发生什么.同时,dev-2修复了一个不同的bug并推送到WebDev.质量检查人员在那里测试代码,并批准第二个错误修复但不是第一个.他如何在没有第一个变速器的情况下将第二个变更集推向生产?我们似乎失去了版本控制系统的所有优点.

我已经阅读了很多关于分支的内容,但我无法弄清楚如何让这对我们有用...我们为每个错误修正和新功能创建一个新的分支,并且只有经过测试后,QA才会合并到WebDev上的默认分支?这是最好的方式,还是我缺少的东西?

谢谢!!

---- ----更新

感谢所有回答到目前为止的人.这是我现在所处的位置......我能想到两个解决方案.

1)dev-1修复了bug-101的bug.他从webdev,合并和本地提交.他把它设置在测试中.QA直接从他的存储库中提取,并在本地进行测试.如果它通过,QA将从webdev - > merge - > push拉到webdev(如果它发生了很大变化,可以再次检查以确保它没问题).所以我们一次只测试一件事,WebDev只包含测试人员在本地测试过的变化,并且总是稳定的.

2)为一切创建分支.dev-1创建分支"bugfix-101"然后推送到webdev而不合并它.QA可以测试分支代码,如果它已获批准,则将其与默认分支合并.我对这个方法有四个问题 - (a)是否可以将开放分支推送到远程存储库?(b)如果QA合并并关闭webdev上的分支,下次我拉,我的本地回购还会关闭并合并分支吗?(c)你如何从分支代码进行测试?当我在浏览器中运行Web应用程序时,我如何从分支测试?(d)是否存在创建如此多命名分支的性能问题(假设其中大部分将快速关闭)?

再次感谢.

Laz*_*ger 6

欢迎来到Bassam:

您的团队显然错过了Mercurial中的(非常简单)分支和合并以及使用monolitic(?)默认分支.

只需略微改变您的思路和工作流程,您就会发现一个很大的不同:

  1. 每个QA成员都拥有repo 的永久克隆,并且只根据请求提取开发人员的回购(它更快,拉动更改更明显); 也许分支QA也有意义
  2. 每个重大更改(功能或错误修复)使用单独的分支
  3. 当开发人员在他的回购中的分支"Bugfix Y"中有一个变更集X并准备好进行测试时,他要求QA"拉动并测试变更集X"
  4. QA这样做,可能会将"Bugfix Y"合并到他的仓库中的"QA"分支(作为"测试通过"标志?)并将"QA"分支合并到主线("稳定"或"默认"分支),并且最后将结果推送到所需的目的地(WebDev和Prod?)
  5. 在每个下一个请求中,必须重复步骤4

这样,您就不会一个批准周期中混合多个开发操作