我团队的开发流程基于 持续集成. 。我们创建的唯一分支是发布时的维护分支,但除此之外,开发人员应该定期(如果不是更频繁的话,每天)提交到主干,以便每个人的工作始终集成,不断测试,以及所有这些好东西。

我的理解 动态控制系统 是它非常适合分支。几年前,我在一个团队工作,这非常有用,因为每一点开发都是在一个分支上完成的,只有在完成和测试后才合并。但这与持续集成是不同的理念。

但在我看来,对于使用持续集成的团队来说,DVCS 工具的常规功能(例如 git 不会特别相关,如果合并更改需要可能被遗忘的额外步骤,甚至可能会阻碍持续集成过程。

我确信 DVCS 还有其他好处(例如提交非常快,因为它是本地的,大概与主分支的合并可能会在开发人员继续工作时在后台发生)。

但对于这个问题,我感兴趣的是使用 DVCS 和持续集成的团队如何调和这两种看似冲突的理念。我主要想听听真正在做这件事的人的意见。

有帮助吗?

解决方案

实际上DVCS制成持续集成更加容易。

通过中央VCS,每个开发有权利在主干直接提交,因此,他可以提交缺陷代码。 CI将在事后检测到它。因此,它可能有碎躯干甚至CI。

在另一方面,在世界DVCS的基本操作被分支和合并。因为合并是明确的和单独的过程与提交到主干,一个可随时查询之前合并的的结果它的土地于躯干。我没有使用Git的经验,但集市VCS的开发者已经成功地使用这种技术至少3.5年PQM工具的帮助。

基本上PQM工作流程如下如下:开发商发表了他的分支,因此它可以被合并,然后他发送一个特殊的电子邮件与合并指令PQM机器人。当PQM接收合并请求,它使一个单独的集成分支(主干的副本),然后合并开发商的分支,并运行在生成的代码测试。如果所有的测试都通过,则集成分支被推到主干,否则开发商将收到一封电子邮件与日志的测试失败。

运行所有测试的商场项目需要时间,但测试是在一个单独的服务器上运行的需求。开发者不会被合并被阻塞并且可以继续处理其他任务。

作为基于PQM合并的结果工作流中的BZR主干永远不会断开(只要至少有足够多的验收测试和回归测试)。

其他提示

由于所有DVCSs可以与使用集中式存储库的工作流中使用,没有任何问题。政策规定,开发商必须推动他们的变化到中央存储库以完全相同的方式,政策使然承诺非分布式VCS。额外的工具,使开发人员可以编辑补丁集是不以任何方式阻碍,实际上使你更容易产生维护的代码库。

使用Git的像一个DVCS不会阻止你犯定期到中央存储库。但是,它意味着你可以在本地使中间提交,只有一旦你完成变更推到中央存储库。

这种方式你从源代码控制甚至当你中途实现一个功能,而不会破坏构建为其他开发人员的利益。

持续集成工具如哈德森具有用于DVCS支持,所以我怀疑这是可以调和与分布式版本控制持续集成。

首先,我想用工作流,如局部分支流程CI DVCS可能不太必要。其次,可以设置(单,中央)持续集成储存库到你推当您准备好,并且钩做CI


<强>添加2009年7月8日

请参阅例如持续集成弹簧清洁交GitHub上的博客

我发现两个想法有助于解释这一点:

  • DVCS 将提交与合并分开。
  • CI 针对您选择的存储库运行。

因此,问题的核心是如何合并到您想要运行 CI 工具的存储库中。开始时您可以选择只有一个存储库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top