如何使用 GitHub 拉取请求进行修补程序
How to do hotfixes with GitHub Pull Requests
警告:我对 git 和 GitHub 都很陌生。
因此,在我当前的设置中,我的团队使用 git 流修补程序(通常由 GitKraken 或 IntelliJ 等图形工具启动和完成)进行必须合并到两个分支并推送的更改在两者的上游。因此,例如流程将是:
- 从 master 拉取最新的
- 启动修补程序
- 提交更改
- 将 hotfix 分支合并到 master 和 develop 并推送到上游
我们现在正在考虑将我们的代码移到 GitHub 中,并希望开始使用 Pull Requests,原因如下:
- CI 挂钩到 运行 测试和东西
- 放置与底层不直接相关的特定代码注释的地方"issue"
- 避免每个人都需要不断地将最新的master/develop拉到他们的本地机器上,以便他们可以合并更改
但是对于修补程序,我不确定该怎么做,因为我要合并到两个分支但实际上是一个 "action" 所以手动创建两个拉取请求似乎很奇怪,特别是从步骤4) 在我们目前的流程中是一次点击。
有没有聪明的方法来处理这个问题?我的理想情况是按下 Pull Request 上的合并按钮只会合并到两者中,但这似乎不是一个可用的选项。
正如您所提到的,一个 Pull Request 只有 一个 目标分支,因此您无法同时将修补程序推送到 master
和 [=11] =] 通过合并一个 Pull Request。
我也很惊讶你提到你的第 4 步 - 将修补程序分支合并到 master
和 develop
并向上游推送 - 是一个动作。虽然从 hotfix
到 master
的合并很有可能不会 运行 进入合并冲突,但我不能对从 hotfix
到 [= 的合并说同样的话11=] 因为它本可以在上次部署到生产环境后进行处理。
我的建议如下:
- 创建一个从
hotfix
到 master
的 PR 并让某人审查它以验证修复
- 合并到
master
后,创建另一个从 hotfix
到 develop
的 PR 并查看是否 运行 合并冲突
- 如果是这种情况,请解决合并冲突,使 PR 最终处于要合并的状态,并让人审查 PR
- 如果没有合并冲突,请找人审核 PR
另一种解决方案,如果您真的想走自动化路径,将同时利用 GitHub webhook 和 API.
webhook 将允许您从同一个 hotfix
分支 notified when a PR is merged. You could inspect the payload to make sure that the base branch starts with hotfix/
and the target branch is master
. You could then react to that event by using the API to create a new PR 到 develop
。
这将涉及一些开发工作,由于通过 UI 创建 PR 仍然非常简单快捷,因此付出努力可能不值得。
警告:我对 git 和 GitHub 都很陌生。
因此,在我当前的设置中,我的团队使用 git 流修补程序(通常由 GitKraken 或 IntelliJ 等图形工具启动和完成)进行必须合并到两个分支并推送的更改在两者的上游。因此,例如流程将是:
- 从 master 拉取最新的
- 启动修补程序
- 提交更改
- 将 hotfix 分支合并到 master 和 develop 并推送到上游
我们现在正在考虑将我们的代码移到 GitHub 中,并希望开始使用 Pull Requests,原因如下:
- CI 挂钩到 运行 测试和东西
- 放置与底层不直接相关的特定代码注释的地方"issue"
- 避免每个人都需要不断地将最新的master/develop拉到他们的本地机器上,以便他们可以合并更改
但是对于修补程序,我不确定该怎么做,因为我要合并到两个分支但实际上是一个 "action" 所以手动创建两个拉取请求似乎很奇怪,特别是从步骤4) 在我们目前的流程中是一次点击。
有没有聪明的方法来处理这个问题?我的理想情况是按下 Pull Request 上的合并按钮只会合并到两者中,但这似乎不是一个可用的选项。
正如您所提到的,一个 Pull Request 只有 一个 目标分支,因此您无法同时将修补程序推送到 master
和 [=11] =] 通过合并一个 Pull Request。
我也很惊讶你提到你的第 4 步 - 将修补程序分支合并到 master
和 develop
并向上游推送 - 是一个动作。虽然从 hotfix
到 master
的合并很有可能不会 运行 进入合并冲突,但我不能对从 hotfix
到 [= 的合并说同样的话11=] 因为它本可以在上次部署到生产环境后进行处理。
我的建议如下:
- 创建一个从
hotfix
到master
的 PR 并让某人审查它以验证修复 - 合并到
master
后,创建另一个从hotfix
到develop
的 PR 并查看是否 运行 合并冲突- 如果是这种情况,请解决合并冲突,使 PR 最终处于要合并的状态,并让人审查 PR
- 如果没有合并冲突,请找人审核 PR
另一种解决方案,如果您真的想走自动化路径,将同时利用 GitHub webhook 和 API.
webhook 将允许您从同一个 hotfix
分支 notified when a PR is merged. You could inspect the payload to make sure that the base branch starts with hotfix/
and the target branch is master
. You could then react to that event by using the API to create a new PR 到 develop
。
这将涉及一些开发工作,由于通过 UI 创建 PR 仍然非常简单快捷,因此付出努力可能不值得。