在功能分支

时间:2016-04-04 12:31:24

标签: git testing github merge pull-request

我们刚刚升级到最新版本的BitBucket,它允许我们禁止直接推送到主分支。现在我们正在使用Github Flow过程的一个版本(即来自主分支的克隆功能分支),并且只能使用pull请求从feature / bugfix分支合并到master。 我们希望执行我们的测试(一些自动化,一些手动),同时仍然在功能分支上工作,并且在合并到主分支之前。我正在考虑使用拉取请求周期如下:

  1. 发布功能拉动请求
  2. 团队批准的拉取请求
  3. 测试功能
  4. 测试完成后,合并为主人
  5. 如果我们等到在测试之前推送到主人之后,这可能会导致错误和回归也被引入主人。

    我的问题是:由于其他用户总是有可能使用其他拉取请求合并到主服务器,这意味着如果有一段时间,我的拉取请求可能必须重新定位到主服务器的更新状态拉出请求最初打开后经过。这意味着要么再次执行测试,要么在至少一个未完成的拉取请求处于活动状态时锁定存储库。但是锁定存储库也存在问题,因为没有其他人可以工作。

    还有其他人遇到过这个问题吗?

    谢谢, 保罗

1 个答案:

答案 0 :(得分:0)

是的,对于使用功能分支的任何团队来说,合并到主人的争用是一个问题。

如果团队能够独立工作而且不必协调,团队工作最快,因此锁定通常不是一个好的解决方案。

通常的解决方案是这样的:

  1. 在其功能分支上开发功能
  2. 测试功能
  3. 将主要功能分支重新定位(或将主设备合并到功能分支中)
  4. 如果发生重大合并冲突,请返回2.
  5. 将要素分支合并为主要
  6. 回归测试大师
  7. 当功能很小且测试很快时,此工作流程效果最佳,所以

    • 尽可能地自动化您的测试。努力将得到回报。彻底的自动验收测试将同时用于功能的合并前测试和母版的回归测试。

    • 规划您的功能,以便将它们开发并合并为小块。在某种程度上,这可以通过查找独立有用的更大特征的部分来完成,因此可以独立地部署和暴露给用户。否则,在功能完成之前,开发和部署功能部分而不将其暴露给用户,使用feature toggle隐藏功能部分,否则在功能完成之前,用户可以看到这部分功能。

    有时仍需要锁定存储库以进行非常大的更改,这些更改无法合并成碎片,例如框架升级。