[DevOps翻译]合并Pull Request的正确方法是什么?

211 阅读5分钟

本文由 简悦SimpRead 转码,原文地址 blog.urth.org

编辑:在/r/programming的讨论中,来自/u/nik9000的评论给我指出了一个我认为是......。

编辑:在/r/programming的讨论中,一个来自/u/nik9000的评论给我指出了我认为最好的解决方案。

GitHub有一个功能,PR提交者可以允许我直接推送到他们的分叉上。这意味着我可以通过检查他们的PR并强制推送回他们的分叉版本,从而有效地编辑他们的PR。显然,这已经存在了一段时间,但我没有注意到它。

再次感谢/u/nik9000指出了这一点。

所以我在GitHub上做了一个新的保存的回复,我将在今后收到的所有PR中使用。以下是内容。

Hi, thanks for your PR! I’m pretty finicky about my projects (see [this blog post](https://blog.urth.org/2022/07/02/what-s-the-right-way-to-merge-a-pull-request/) for details), so I rarely merge a PR as-is. I can move forward on your PR in one of two ways:

1. I check it out locally, fiddle with it as needed, merge it locally, and simply close this PR. This will preserve at least one commit with your name on it, but the PR will show up as closed in your GitHub stats.

2. If you enable me to push directly to your fork, I can do my fiddling, then force push to your fork and merge the resulting PR. Again, this will preserve at least one commit with your name on it, but you also get credit for the PR merge in your GitHub stats. The only downside is that I will be force pushing directly to your fork.
Please let me know which approach you’d prefer. If I don’t hear from you before I get around to working on this PR I’ll go with option #1.

Thanks again for your contribution!
你好,感谢你的PR!我对你的PR非常挑剔。我对我的项目非常挑剔(详见[这篇博文](https://blog.urth.org/2022/07/02/what-s-the-right-way-to-merge-a-pull-request/)),所以我很少按原样合并一个 PR。我可以通过两种方式之一推进你的公关。

1. 我在本地检查它,根据需要处理它,在本地合并它,然后简单地关闭这个PR。这将至少保留一个带有你名字的提交,但该 PR 会在你的 GitHub 统计中显示为关闭。
2. 如果你允许我直接推送到你的分叉,我可以做我的手脚,然后强制推送到你的分叉,并合并产生的 PR。同样,这将至少保留一个有你名字的提交,但你也会在你的 GitHub 统计中获得 PR 合并的信用。唯一的缺点是,我将直接强制推送到你的分叉上。
请让我知道你喜欢哪种方式。如果在我着手处理这个PR之前没有收到你的来信,我将采用方案1。

再次感谢您的贡献!

这些年来,我收到了很多拉动请求。但最近,我一直在思考,我合并它们的方式是否正确。

当我写我的GitHub简介生成器时,我让它生成的一个统计数字是我的拉动请求中有多少被合并了。我的档案目前显示我已经创建了562个PR,其中420已经被合并了。

但事实上,以某种形式被合并的数量超过了420个。只是其中一些,维护者在提交时做了些手脚,通过CLI在本地进行了合并,然后关闭了PR。

我宝贵的统计资料!

问题是,对于提交给我的PR,我总是这样做。我对我个人项目中的代码非常挑剔,所以几乎不可能提交一个我愿意按原样合并的PR。我通常在PR中编辑的内容包括。

  • 所有东西的名称。
  • 代码中的小问题,比如什么时候包括可选的小括号,当有多个选项时,到底应该使用什么运算符,以及你能想到的其他所有可能的事情。(幸运的是,在审查工作报告时,我能够抑制这种情况,但我把所有的精神错乱引导到我的个人项目中。)
  • 为API的变化/增加添加文档(人们大多忘记这样做)。
  • 评论,包括评论的文字包装(我喜欢Emacs在我点击alt-q时的做法)。
  • 提交信息本身。我喜欢一个非常具体的格式,或多或少地遵循Chris Beams的建议,除了我可以接受较长的主题。
  • 确保提交的内容有条理。我讨厌像 "修复上一个提交中的错字 "这样的提交。只要编辑前一个提交就可以了。
  • 确保那些面向公众的修改的提交也会更新更改文件。

我可以让PR提交者来做这些事,但我不想这样做。要想让别人提交我想要的东西,唯一的办法就是通过PR评论把他们当作木偶来操作。这对我来说很累,对他们来说也很气愤。

所以我通常会用GitHub CLI工具(gh pr checkout 42)把PR作为本地分支检查出来,摆弄他们的提交,确保CI通过,然后在本地合并它。这样就可以在git历史中保留他们作为提交者的名字,所以他们得到了一些荣誉。然而,这有点奇怪,因为带有他们名字的代码可能与他们提交的代码有很大的不同。

而且他们也不会因为PR被合并而得到互联网积分。该死的,GitHub为这种东西给你 成就! 所以我相信有些人真的希望有一个合适的PR被合并。

我可以提供的一个选择是,把他们的原始 PR 编辑一下,作为一个新的分支推回我的 repo,然后让他们把这个分支作为一个 PR 提交。如果有人真的关心 "PR被合并 "的数据,我愿意这样做。

那么你怎么看?如果有足够多的人告诉我他们想要这样做,我就会在人们提交PR时开始提供这种服务。或者,也许还有其他我没有想到的方法?(请注意,"不要那么挑剔 "不是一个选项。)

你可以给我发邮件或者在/r/programming上讨论这个问题


通过www.DeepL.com/Translator(免费版)翻译