为 Scrum 推荐的 Git 工作流程

Recommended Git workflow for Scrum

每当我读到 Scrum 以及它应该如何工作时,特定的功能应该在冲刺结束时完成并被认为是可交付的。在整个冲刺过程中,这些故事都被烧毁了。

我想知道正确的 Git 设置是什么来实现这一点?

我们目前的开发工作有基于功能的分支。开发人员从 dev 分支中切出一个功能分支,对其进行处理,然后将其合并回 dev 分支。更新后的dev分支代码是否应该推送到QA分支进行测试?或者让正在开发的其他功能合并回开发然后将所有内容推送给 QA 是否明智?我之所以这样问,是因为我们的情况是直到冲刺的最后一天才结束,很高兴看到故事在整个冲刺过程中都结束了。

只是一个建议。 您可以让 qa 处理以前的 sprint 代码。 让我们说。 Sprint 1 - 开发了一些东西。 Sprint 2 - 使用 sprint 1 更改剪切一个分支并将其分配给 qa 进行测试,同时开发人员可以继续进一步开发。 在进一步的冲刺中重复相同的过程。

这样 qa 和 developer 都会忙于他们的工作而不会发生冲突。

您采用的方法取决于多种因素:

  • 回归测试的自动化程度如何
  • 您通常处理的功能的大小
  • 您对持续集成的使用
  • 您对 feature toggles and canary releases
  • 之类的东西的使用

理想的方法是将正在进行的工作提交给您的主要分支。实现这一目标的方式是拥有大量良好的持续集成和自动化测试覆盖率。这让您确信提交到主分支的任何代码都不会影响现有功能。

如果您使用功能切换和选择性发布,那么这会进一步降低将所有内容合并到主分支的方法的风险。

这是团队在想要持续交付时经常使用的方法。

如果您采用手动测试方法或有限的自动测试覆盖率,那么将代码合并到主分支是一种冒险的方法。相反,您可能希望在功能分支中工作。但是,可以通过 经常从主分支合并到您的功能分支 来降低合并冲突的风险。这样,随着功能重新组合在一起,问题大部分已经得到解决。我建议使用持续集成工具进行这种频繁的合并。

使用上述方法会有所帮助,但仍然很难通过 sprint 逐步完成功能。为实现这一目标,您可能需要开始投资于更自动化的回归测试覆盖范围,并通过普遍提高质量标准(可能通过使用测试驱动开发方法)。