2011-08-30 46 views
1

我很想知道分布式SC环境中如何使用“分支”。 我们刚开始在团队环境中使用mercurial,我希望从别人的经验中学习 - 有什么好的方法来“组织”分支实践(希望我可以绕过痛苦和时间来做一个愚蠢的方式。 ..)在分布式环境中分支

从我读过的主干应该包含正在进行的开发代码,一个分支可能是一个'稳定'版本,其他可能是实验或功能...合并到主干上...

但是 - 对我来说有点不清楚的是bug修复和QA之类的东西......我读过的大部分内容都提到要分别为QA分支(在完成时将树干合并到分支中,然后推分支到树干 - 这看起来很麻烦,而且没有解释)

我也读过你在稳定的分支(或发行分支)中进行bug修复,然后与主干合并......这似乎与直觉相反 - 因为你可能会像你一样打破“稳定”分支修复错误...我期望稳定的分支是'稳定的',并且与版本#无法触及...

我可以看到分支是必要的 - 但帮助我理解一些在那里的做法。我们正在使用解释型语言(未编译)来开发Web应用程序 - 因此改变事物并破坏事情是非常容易的。

谢谢。

=======================

罗杰·亚历克斯 - 感谢 - 这是有道理的 -

不过,我很现在有一个'小'的关键点'融合'分布式模型与集中......在那里写了很多建议有一个中央存储库 - 一个“水坑”(如果你愿意)每个人都去'分享'或'拉'最新。

所以现在我发现你推荐的分布式模型 - 打破了(至少在我心中)......我不想保留5个以上的主干(main,hotfix,deploy/QA,develop,feature-n )并且让每个人都进行拉/推 - 所以看起来开发人员LOCALLY似乎将从开发中拉出来 - 他们可能会在本地分支以获取功能。或修补程序...然后一些管理员会将中央开发与中央释放合并...开发团队可能有一个本地发布支持来修复QA团队返回的问题......他们是否应该推动发布和让ADMIN与DEV合并?然后把他们自己的改变从CENTRAL DEV回到他们的本地?或者他们应该在本地合并 - 并将RELEASE推回中央?

与此一致 - 我不认为有必要或想要有主要的本地副本...

好像保持开发团队(推荐)3树干中央存储库(MAIN, QA,DEV)真的会混淆分布式模型的工作流程。但是,有一个中心MAIN--被推送到你的制作工具箱 - 似乎需要一个中心QA,它将gests推送到QA包装盒,然后由一个单独的团队进行质量检查。(因此不能合乎逻辑地放在每个人的设备上盒子本地)

哇 - 管理大型工作流程很纠结 - 在管理这些东西时必须有一些文献 - 不同的工作流程想法等。工具他们自己不会很好地描述如何使用它们...(就像电钻不带有关于如何建立内阁的指令!!!笑)

再次感谢

回答

2

有一个称为Flow流行的分支模型。它本质上是一个过程图和一些辅助脚本。虽然脚本是专门为git构建的,但程序映射应该适用于您的案例。基本上:

  • 主分支的实时代码。没有人直接反对这个分支。
  • 为大多数开发人员开发分支。这是大部分工作完成的地方。
  • 用于长期运行功能的功能分支,最终被合并开发。
  • 发布分支在发布之前从功能冻结开发中分离出来。完成后,代码被合并为主。
  • 修补程序分支用于紧急工作。这些从主人分裂,然后合并回到发展和主。
+0

我想发布一个答案,并链接到相同的博客文章,但你击败了我。我们使用与所描述的类似的模型,它对我们来说工作得非常好。所以,+1 –

+0

QA分支在哪里适合?或QA检查“发布” - 与发布工作合并回到开发...... ???? – jpmyob

+0

@jpmyob:关于在发布中的工作,请注意图 - 承诺发布总是合并回来开发,以及掌握。关于质量保证,没有硬性规定,但我认为你会发现它通常是在发布分支上完成的,因为开发分支在任何给定时间都可能被破坏。所以一般来说:大多数工作都是针对开发完成的,当您准备发布时,您会裁剪一个发布分支并针对该分支执行质量检查。 QA期间发现的错误在发布分支上得到修复。当QA完成时,您将发布分支合并到master和development中。 –