【发布时间】:2013-09-11 03:26:03
【问题描述】:
由于我们是在已部署的系统上进行开发,因此我们正在尝试更好地利用分支——直到最近,几乎所有东西都被检入到主干中,部署到测试/登台然后生产。这意味着我们在“测试”期间必须非常小心,我们仍然偶尔会在几乎没有测试的情况下将不需要的更改发送到服务器。
我的想法是,最好的方法是“次要”补丁直接进入主干,主要功能成为功能分支,在完成后重新集成到主干,"Production" branch 始终与我们可以合并的服务器状态匹配就在部署之前。
这里提供的主要好处是,您可以选择将哪些更改推出到生产环境中——如果您愿意,您可以获取单个签入或分支并将其发送到生产环境,而无需涉及所有其他分支。
另一方面,最好让分支经常与主干集成——拉起更改,这样它们就不会累积并进行令人讨厌的合并。
因此,这两种模式可能会导致您希望将分支与生产合并以引入重要功能,但该分支已经从主干“拉入”了您不想发布的更改。
SVN 可以处理这个吗?对于每两周部署一次的代码开发团队来说,真的有很好的做法吗?
【问题讨论】:
-
您想将功能合并到生产而不将其合并到主干吗?
-
使用 Subversion 1.8 会有更好的运气。它对合并引擎进行了一些重大改进,特别是对于兄弟合并等更高级的用例。
-
就我个人而言,我会将主干视为王道:那里没有发生任何开发,仅从主干创建的功能分支合并。你在一个特性分支上做你通常的 QA,一旦它被签署,就将它合并回主干。然后,标记主干并将其推向生产。新功能从主干分支出来,循环又开始了。如果有必须立即修复的错误,请在标记的修订版处创建一个错误修复分支,修复错误,进行 QA,然后再次合并,标记并发布到生产环境。一旦你发布了几个版本,就很容易遵循这个工作流程。只是我的两分钱。
-
@Sameer 这似乎与用于“生产”分支的过程完全一样,但在不同的地方,我对此非常满意,但在什么时候测试你的功能集成(不是开发测试,但允许 QA 在发货前测试整个功能集?)
-
我的团队实践敏捷。我们有每日例会、每周冲刺,两周后我们通常会进行 QA,合并签核后并部署到生产环境。在第一个星期一的 scrum 中,团队挑选了本周的一些 bug 和特性,在随后的每个 scrum 中,团队检查已经取得的进展。两周后(实际上是第二个星期三),我们有一组已完成的任务(修复了错误,添加了功能),可以发送给 QA。到周五,我们将获得批准,可以合并并部署到生产环境中。