关于为php web app和mercurial设置开发工作流的建议

关于为php web app和mercurial设置开发工作流的建议,mercurial,Mercurial,我正在组建我们(相对较小)的编程团队,与源代码管理一起工作。直到现在,还没有控制,事情一直。。。随意的 该团队由6名开发人员组成,其中2名也是QA人员。 我已经在谷歌上搜索了很多关于这个主题的东西,这是压倒性的! 到目前为止,我唯一的决定是我们将使用mercurial 背景:这是一个用PHP开发的web应用程序。不断开发新功能(这意味着同样不断地修复bug:-P) 我们从外包所有的web开发开始,这意味着我们的生产代码由另一家公司托管。因此,我们可以使用Mercurial在我们的内部网络中进行开

我正在组建我们(相对较小)的编程团队,与源代码管理一起工作。直到现在,还没有控制,事情一直。。。随意的

该团队由6名开发人员组成,其中2名也是QA人员。 我已经在谷歌上搜索了很多关于这个主题的东西,这是压倒性的! 到目前为止,我唯一的决定是我们将使用mercurial

背景:这是一个用PHP开发的web应用程序。不断开发新功能(这意味着同样不断地修复bug:-P) 我们从外包所有的web开发开始,这意味着我们的生产代码由另一家公司托管。因此,我们可以使用Mercurial在我们的内部网络中进行开发和测试,但当它准备上线时,我们需要将文件ftp到那边的公司。(傻?就是这样……他们也为我们做搜索引擎优化和其他工作,所以管理层不会放弃他们)

以下是工作流的要求:

  • 多个程序员可能正在一起开发新功能,或者 分开
  • 同时,程序员可能会被叫去修复一个bug, 然后回到他正在开发的任何功能
  • 如果一个bug被修复了,我们需要一个QA人员进行测试,然后将其提交给 尽快生产
  • 如果它是一个新特性,它可以进入一个测试环境,QA将 彻底测试,然后就可以发货了
我建立这个的想法是

  • 每个程序员都有自己的存储库
  • 有一个中央发展报告
  • 有一个QA回购协议
因此,程序员想要开始一项新功能的工作。他创建一个分支,做他的工作,他很高兴,与他的主要分支合并。现在他从dev中提取更改,合并,推送到dev

QA人员将从dev拉至QA repo。由于许多人都在推动开发,我们希望一次只测试一个新特性,所以MrQA可以选择应用哪些变更集(或任何术语)。测试功能-工作!ftp到生产。然后可以从dev开始测试下一个特性

对于bug——程序员将在其本地存储库中进行修复,直接发送给QA,然后从QA开始运行

但是。。。如果我们有两个QA人员同时在QA repo中测试(测试两个新特性),会怎么样?ftp传输将发送所有文件。。。因此,这意味着所有功能都需要准备就绪,我们需要等待它们都完成。这是我们当前问题的一部分,在我自己的修复程序上线之前,等待其他开发人员的测试。。。这就是为什么我们想要源代码控制。。。所以现在我很困惑

好的,现在我需要一些建议。我读过关于每个版本都有单独的分支的文章。为每个已发布版本提供单独的分支。我真的不知道该怎么想。。。上述工作流是否可用?这对我们的小团队来说是不是太过分了?还是太简单了?因为我是一个向所有人推销版本控制的人,我不想设置一周后就会失败的东西


提前感谢您前来救援

首先祝贺您决定使用某种版本控制。早期可能会有一些痛苦,但从长远来看是值得的

我最初的想法是,开发方面的事情听起来不错。我不认为需要一台中央服务器,但许多人使用它时没有问题

我认为问题开始蔓延到QA。你说:

QA人员将从dev拉至QA repo。由于许多人都在推动开发,我们希望一次只测试一个新特性,MrQA可以选择应用哪些变更集

这意味着QA人员是从开发树中挑选的,所以我猜他会使用类似的东西。在这种情况下,QA有一个在开发生态系统中任何地方都不存在的分支。当开发人员需要修复一个bug时,他是在他的开发树中修复它,还是在QA分支之外修复它?如果他在QA分支上修复它(bug就在那里),它如何回到开发人员那里?我可以看到这里的问题,开发人员和质量保证人员永远存在分歧

就我个人而言,我建议阅读。基本上,QA将测试的每个版本都有一个命名的分支。QA的任何错误修复都会在该分支上进行,并且可以将其合并回开发分支。没有樱桃采摘作为正常流程的一部分,因为我预计这将很难长期管理

还有其他工作流程(可能和使用mercurial;-)的人一样多),但这是一个很好的起点,您可以根据需要对其进行调整。

跟进Paul的注释
  • 对于由6名成员组成的团队,我也认为您可以使用或不使用“中央服务器”:在最简单的形式下,团队可以在需要时使用p2p拉取,并且某种中央服务器将自动显示为(可能是)回购某些QA人员
  • 考虑“岸上”(阅读Steve Losh作为起点)您选择并将在流程中遵循的分支模型(命名分支/导出并扩展为“git workflow”?/,单独回购)
  • QA端的部分回购可能成为额外麻烦的来源(再次参见Paul的文本)。也许完整的克隆和强大的沟通(团队很小)“针对默认测试分支X”将是更干净的方式
如果我们有两个QA人员同时在QA repo中测试(测试两个新特性),会怎么样

每个人都有自己的回购协议(它们可能相同,但QA测试用于不同的分支机构)。也许这里将是中央QA-repo的位置,在这里只有QA可以提交通过所有测试的变更集,并且提交后钩子将每个变更发布给外部第三方

我读过关于每个版本都有单独的分支的文章。每个已发布版本的单独分支

我希望,这是“每个功能分支|每个错误修复分支|每个市长分支|小关系”