gutenbergdocs/contributors/code/auto-cherry-picking.md
2025-10-22 01:33:45 +08:00

91 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自动化精选合并
`npm run other:cherry-pick` 可自动将带有特定标签的拉取请求精选合并至**当前分支**。
该功能在WordPress主要版本发布时尤为实用因为脚本默认会查找带有`Backport to WP Beta/RC`标签的已合并拉取请求。
您也可以通过传递自定义标签作为第一个参数在不同场景中使用此功能。具体示例可参阅本文档末尾的Gutenberg插件发布案例。
运行`npm run other:cherry-pick`会出现以下提示:
```
当前位于 "wp/6.2" 分支
本脚本将执行以下操作:
• 将标记为"Backport to WP Beta/RC"的已合并PR精选合并至此分支
• 询问是否推送该分支
• 在每个PR中添加注释
• 移除每个PR的标签
后两项操作将使用您关联至GitHub CLIgh命令的账户执行
是否继续Y/n
```
同意后将会执行以下流程:
```
开始逐个执行精选合并..
$ git pull origin wp/6.2 --rebase...
$ git fetch origin trunk...
发现以下待精选合并的PR
#41198 站点编辑器:设置样式预览最小宽度
正在获取提交ID... 完成!
#41198 860a39665c318d33027d 站点编辑器:设置样式预览...
开始逐个执行精选合并...
第一轮精选合并:
精选提交afe9b757b4 对应PR#41198 站点编辑器:设置样式预览...
精选合并完成!
执行结果:
成功精选合并 1 个PR
合并失败 0 个PR
即将推送至 origin/wp/6.2
是否继续Y/n
```
本次运行成功此时您可以确认是否精选合并了正确的PR。
如果精选合并出现冲突怎么办脚本会继续处理其他PR并自动重试。
若部分PR仍合并失败脚本将跳过这些PR并告知需要手动解决冲突的节点。
无论哪种情况,当您通过精选合并阶段后:
```
正在推送至 origin/wp/6.2
添加注释并移除标签...
41198: 已将此PR精选合并至wp/6.2分支以便纳入下一版本afe9b757b4
完成!
```
注释功能为可选操作,仅当您安装[`gh`命令行工具](https://cli.github.com/)时可用。
### 能否使用`Backport to WP Beta/RC`之外的标签?
可以!只需将其作为第一个参数传递:
```
npm run other:cherry-pick "其他标签"
```
### 如何用于Gutenberg插件发布
```
# 切换到发布分支
git checkout release/X.Y
# 精选合并所有带有相关回溯标签的已合并PR
npm run other:cherry-pick "Backport to Gutenberg RC"
```
### 未来改进方向
未来有望实现根据当前所选分支自动匹配对应标签:
* release/X.Y - 插件发布分支 → "Backport to Gutenberg RC"
* wp/X.Y - WordPress发布分支 → "Backport to WP Beta/RC"