今日英语表达 7/30 · 场景:PR 描述。 所有例句均为本文特意编写。并非搬运自实际仓库的 PR,Issue 编号仅为示例。
目录
一览
| 表达 | Fixes #1234 / Closes #1234 / Resolves #1234 |
| 含义 | 此 PR 修复了 1234 号 Issue(合并后将关闭 Issue)。 |
| 使用位置 | PR 描述、Commit 消息 |
| 礼貌程度 | 不适用。这是机器读取的格式 |
1. 含义与语境
根据 GitHub 文档,如果在 PR 描述或 Commit 消息中同时使用关闭关键词和 Issue 编号,PR 与 Issue 就会建立关联,并且在 PR 合并时会自动关闭 Issue。关键词共有九个:close、closes、closed、fix、fixes、fixed、resolve、resolves、resolved。文档说明,使用大写字母或在关键词后面加上冒号(CLOSES #10, Closes: #10)也是允许的。
这里有一个重要的条件。 只有当 PR 针对的是仓库的默认分支(通常是 main)时 ,关键词才会生效。如果在针对发布分支(Release Branch)的 PR 中使用 Fixes,Issue 不会被关闭,也不会建立关联。当指向其他仓库的 Issue 时,需要像 Fixes owner/repo#1234 这样带上仓库名。如果有多个 Issue,则必须像 Fixes #10, fixes #11 这样 为每个 Issue 都附上关键词 。
Kubernetes 的 PR 模板中有一个名为 Which issue(s) this PR is related to 的栏目,说明中要求在 Issue 编号前加上 Fixes。KubeVirt 的 PR 模板也在 References 栏中 Fixes # 预先写好了这一行,并指导说如果想在合并时关闭 Issue,就要写成这种格式。
我们也要了解它作为英语句子的语境。fixes 表示“修复 Bug”,closes 表示“结束 Issue”(用于功能请求或文档编写也很自然),resolves 则介于两者之间。虽然功能完全一样,但选择符合 Issue 性质的单词会更易于阅读。
2. 例句
情况 1:Bug 修复 PR 的第一行
Fixes #1234
The restore job now waits for the PVC to be bound before starting the pod.
把关键词放在第一行,空一行后用一两句话写清楚修改了什么。
情况 2:仅关联而不关闭 Issue 时
Part of #2001. This PR adds the API field only; the controller logic will follow in a separate PR.
如果是大型工作的一部分,就不能使用 Fixes。因为一旦这个 PR 合并,尚未完成的 Issue 就会被直接关闭。像 Part of、Related to、Refs 这样的词不是关键词,因此不会关闭 Issue。
情况 3:当 Reviewer 要求建立关联时
Could you add
Fixes #1234to the PR description so the issue gets closed on merge?
3. 相似表达与区别
- Closes #1234. 对于功能请求、文档编写等非“Bug”类 Issue 更加自然。效果是相同的。
- Related to #1234 / Refs #1234. 仅关联而不关闭。GitHub 会将编号转换为链接,并在 Issue 侧留下提及记录。
- Follow-up to #1200. 表示这是前一个 PR 的后续工作。与 10 个 follow-up PR 相连。
4. 韩国人常犯的错误
- This PR is for fixing the issue #1234. 句子虽然通顺,但因为不是关键词的格式,Issue 可能无法关闭。此外,像 the issue #1234 这样不需要加冠词。
- 修改后的句子:Fixes #1234
- Fix #1234 issue. 看起来像祈使句,且 issue 放到了后面,显得很别扭。
- 修改后的句子:Fixes #1234
- Fixes #10, #11 第二个 Issue 没有关键词,因此不会被关闭。
- 修改后的句子:Fixes #10, fixes #11
5. 一行练习
请将以下内容写为 PR 描述的前两行。此 PR 仅解决 3456 号 Issue 的一部分。
这是 3456 号 Issue 的一部分。本次 PR 仅修改文档。
参考答案
Part of #3456
This PR only updates the docs. The code change will follow in a separate PR.
因为只解决一部分,所以用 Part of 代替 Fixes。will follow 的意思是“随后将会进行”。
TT 的话。 Fixes 是供 GitHub 读取并执行操作的关键词。只有在 Issue 完全解决时才使用。
参考资料
- GitHub Docs, Linking a pull request to an issue: https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue
- Kubernetes PR 模板: https://github.com/kubernetes/kubernetes/blob/master/.github/PULL_REQUEST_TEMPLATE.md
- KubeVirt PR 模板: https://github.com/kubevirt/kubevirt/blob/main/.github/PULL_REQUEST_TEMPLATE.md