在功能分支上测试时如何使用 Git 拉取请求
Posted
技术标签:
【中文标题】在功能分支上测试时如何使用 Git 拉取请求【英文标题】:How to use Git pull requests when testing on feature branch 【发布时间】:2016-07-24 00:00:53 【问题描述】:我们刚刚升级到最新版本的 BitBucket,它允许我们禁用直接推送到主分支。现在我们使用的是 Github Flow 流程的一个版本(即从主分支克隆功能分支),并且只能使用拉取请求从功能/错误修复分支合并到主分支。 我们希望在仍然在功能分支上工作的同时,在合并到主分支之前执行我们的测试(一些是自动化的,一些是手动的)。我正在考虑按如下方式使用拉取请求周期:
-
为功能发出拉取请求
团队批准拉取请求
测试功能
测试完成后,合并到 master
如果我们等到推送到主服务器后再进行测试,这可能会导致错误和回归也被引入主服务器。
我的问题是:由于其他用户总是有可能使用其他拉取请求合并到主节点,这意味着我的拉取请求可能必须重新设置为主节点的更新状态,如果有时间的话在最初打开拉取请求后经过。这意味着要么再次执行测试,要么在至少一个未完成的拉取请求处于活动状态时锁定存储库。但是锁定存储库也有它的问题,因为没有其他人能够工作。
还有其他人遇到过这个问题吗?
谢谢, 保罗
【问题讨论】:
【参考方案1】:是的,对于任何使用功能分支的团队来说,合并到 master 的争用都是一个问题。
如果团队可以独立工作且无需协调,则团队工作速度最快,因此锁定通常不是一个好的解决方案。
通常的解决方案是这样的:
-
在其功能分支上开发功能
测试功能
根据 master 重新定位功能分支(或将 master 合并到功能分支中)
如果存在重大合并冲突,请返回 2。
将功能分支合并到master
回归测试大师
当功能较小且测试速度较快时,此工作流程效果最佳,因此
尽可能自动化您的测试。努力会得到回报。彻底的自动化验收测试将同时用于功能的合并前测试和 master 的回归测试。
计划您的功能,以便可以开发和合并以小块掌握。在某种程度上,这可以通过找到独立有用的更大功能的部分来完成,这样可以独立地部署和公开给用户。否则,在功能完成之前开发和部署功能的各个部分而不向用户公开它们,使用feature toggle 隐藏在功能完成之前用户可见的部分功能。
李>有时仍然需要锁定存储库以进行无法合并的非常大的更改,例如框架升级。
【讨论】:
以上是关于在功能分支上测试时如何使用 Git 拉取请求的主要内容,如果未能解决你的问题,请参考以下文章
Git-TFS - 如何在拉取请求被批准之前确保分支是最新的?
Azure DevOps GIT(gitflow)如何在开发分支上强制执行拉取请求以保持源最新?