在功能分支上测试时如何使用 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)如何在开发分支上强制执行拉取请求以保持源最新?

Git简要开发流程

在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?

Git在拉取请求分支上恢复樱桃选择而不在主控上恢复

如何在依赖于另一个尚未合并的 git 分支的新 git 分支上工作?