今日英语表达 30/30 · 阶段:合并后。 文中的例句均为专门编写。并未引用实际仓库的评论,分支和编号仅为示例。
目录
一目了然
| 表达 | Could we backport this to release-1.4? / Is this a candidate for a cherry-pick? |
| 含义 | 这个修复能同步到 release-1.4 吗? |
| 使用场景 | 已合并的 PR 评论、Issue、版本发布相关频道 |
| 礼貌程度 | 礼貌的请求。由维护者来做决定 |
1. 含义与语境
backport 由 back(向后)和 port(迁移、移植)组合而成,意为 将新版本中的修复内容移植到旧版本中。在开源项目中,它指将合并到 main 的修改迁移到已发布的发布分支(如 release-1.4 等),以便将其包含在下一个补丁版本(1.4.x)中。
Kubernetes 将同样的操作称为 cherry pick 。根据 Kubernetes 的 cherry pick 文档,这是指将已合并到 master 的变更迁移到发布分支,通常是为了通过补丁版本发布安全修复或严重漏洞修复。请求者使用仓库的 hack/cherry_pick_pull.sh 脚本为每个目标分支单独创建 cherry pick PR,并从支持的最新发布分支向较旧的分支推进。新的 cherry pick PR 会带上 do-not-merge/cherry-pick-not-approved 标签,只有在版本管理员批准后才能合并。其他项目可能会通过机器人命令或标签来完成相同操作,因此请查阅 CONTRIBUTING 文档。
从这个过程中可以看出,backport 并不是理所当然会做的事情。 发布分支以稳定性为先,通常不接受新功能或有风险的变更。因此在请求时,务必说明 为什么需要它。说明是安全问题、数据丢失或升级失败等严重漏洞,还是受影响的用户较多,有助于维护者做出判断。请求时主语使用 we(Could we ...?)也会带有一种「一起来评估看看」的协作感。
2. 示例句
场景 1:在已合并的 PR 中请求时
Thanks for fixing this! Could we backport it to release-1.4? Users on 1.4 hit this crash during upgrades, and there's no workaround.
there's no workaround 意为“没有变通方法”,能最简短地传达需要 backport 的原因。
场景 2:询问是否适用时
Is this a candidate for a cherry-pick to the 1.3 and 1.4 branches, or is it too risky for a patch release?
candidate 是“候选”的意思。同时给出 too risky(风险太高)这一选项,能让维护者更容易拒绝。
场景 3:维护者回复时
I'd rather not backport this one. It touches the API defaults, which we try to keep stable in patch releases. It'll be in 1.5.0.
拒绝时也伴随着原因和替代方案(下一个正式版本)。
3. 类似表达与区别
- Cherry-pick。 Git 명령 이름에서 온 말로, 특정 커밋만 골라 다른 브랜치에 적용하는 것입니다. Kubernetes 처럼 backport 절차 자체를 이 이름으로 부르는 프로젝트도 있습니다.
- Patch release。 包含 backport 修复内容的发布版本(如 1.4.3 等)。通常会问:Will this be in the next patch release?
- Forward-port。 相反的方向,指将首先在发布分支中修复的内容移至 main。虽然少见,但了解后就不会混淆。
4. 韩国人经常犯的错误
- Please apply this to old version too. 遗漏了具体是哪个版本,以及为什么需要。
- 修改后的句子:Could we backport this to release-1.4? It fixes a data loss bug that affects 1.4 users.
- Backport please!! 听起来不像请求,而像要求。
- 修改后的句子:Would this be a good candidate for a backport?
- I want you to backport this. 这种语气忽视了决定权在维护者手中这一点。
- 修改后的句子:Would you consider backporting this to the 1.4 branch?
5. 一行练习
请将以下韩语句子转换为在已合并 PR 中的评论。
这个修复可以放到 1.4 分支吗?使用 1.4 的用户也遇到了同样的内存泄漏。
参考答案
Could we backport this to the 1.4 branch? Users on 1.4 are hitting the same memory leak.
are hitting 是“正在经历”的进行时,传达了问题正在发生。如果再加上用户数量或问题链接,会更有说服力。
Titi 的寄语。 backport 是一种请求。加上一句话说明为什么需要它,维护者就会更容易说“好的”。谢谢大家陪伴我们度过三十篇教程。
参考
- Kubernetes, Cherry Picks 文档: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-release/cherry-picks.md
- Git 문서, git-cherry-pick: https://git-scm.com/docs/git-cherry-pick