今日英语表达 21/30 · 阶段:接收评审与回复。 所有例句均为本文特意创作,并未直接引用实际仓库中的评论,提交信息也仅为示例。
目录
一目了然
| 表达 | Could you squash your commits? / Squashed into one commit. |
| 含义 | 能把提交合并一下吗? / 已合并为一个提交。 |
| 使用场景 | 评审收尾阶段的请求与回复 |
| 礼貌程度 | 中性。这是一项关于流程的请求 |
1. 含义与语境
squash 的意思是“压扁、挤压”,在 Git 中指 将多个提交合并为一个。通常可以通过在 git rebase -i 中选择 squash 或 fixup,或者配合使用 git commit --fixup 和 git rebase --autosquash 来进行合并。
为什么要请求合并呢?在经过评审的过程中,会堆积许多诸如 「fix typo」、「address review comments」 或 「wip」 的提交。这些提交在评审时很有用,但在合并后会让历史记录变得难以阅读。KubeVirt 的评审员指南指出,每一个提交都应当具有意义,并指导要求合并诸如 「Fix reviewer comments」、「wip」 和 「addition」 这样的提交。
何时进行合并同样重要。Kubernetes 贡献指南指出,在评审期间应当将修改作为新的提交上传,暂时不要进行压缩(squash)。因为评审员需要能够单独查看修改的部分。压缩通常在收到请求时、也就是差不多获得 LGTM 的时候进行。该指南还提出了标准:合并修改提交,但不要合并为了同一个目标却相互独立的变更。此外,在使用 Prow 的仓库中,可以通过挂上 tide/merge-method-squash 标签来让机器人在合并时自动压缩提交,指南解释说,与手动合并不同,这样做不会导致 lgtm 标签消失,也无需重新运行 CI。
由于压缩会改变提交哈希(commit hash),因此需要进行强制推送(force push)。我们使用第 12 篇中看过的 git push --force-with-lease 。
2. 例句
情境 1:维护者的请求
This looks good to merge. Could you squash the fixup commits into the main one before we merge?
情境 2:作者的回复
Done. Squashed into two commits: one for the API change and one for the generated files.
将生成的文件(generated files)保留为单独的提交是一种常见的惯例,旨在方便评审员只查看人工编写的变更。请遵循仓库的规则。
情境 3:作者主动询问时
Should I squash the commits now, or would you prefer to keep them separate until the review is done?
不同的评审员有不同的偏好,因此主动询问是最稳妥的做法。
3. 相似表达与区别
- Squash and merge. 这是 GitHub 上的合并方式名称。如果维护者使用此按钮合并,作者就无需亲自合并了。
- Could you clean up the commit history? 不仅指压缩,还广泛指清理提交信息、调整顺序等。
- Fixup commit. 为了修补先前提交而做的小提交。前提是以后会进行合并。
4. 韩国人常犯的错误
- 在评审过程中 每次修改就立即压缩并强制推送。 这会让评审员很难找出具体修改了什么。
- 修改后的句子(PR 评论):Pushed the fixes as separate commits for easier review. I'll squash them before merge.
- I merged my commits into one. merge 让人联想到分支合并,容易引起混淆。
- 修改后的句子:I squashed my commits into one.
- Squash is done. 主语和动词搭配有些生硬。
- 修改后的句子:Done, squashed.
5. 行动练习
假设你是作者,请在评论中写下以下内容。
已将评审修改的提交合并为一个提交。已执行强制推送。
参考答案
I've squashed the review fixes into a single commit and force-pushed.
当 force-push 用作动词时,很多情况下也会带连字符。告知评审员已经强制推送,可以让对方立刻明白画面改变的原因。
Tt 的寄语。 评审期间累积提交,结束时进行压缩。遵守这个顺序,对评审员和历史记录都更加友好。
参考
- Kubernetes 贡献指南,Pull Request Process (Squashing): https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md
- KubeVirt 评审员指南: https://github.com/kubevirt/kubevirt/blob/main/docs/reviewer-guide.md
- Git 문서, git-rebase(
--autosquash): https://git-scm.com/docs/git-rebase