维护者 Pull Request 指南


作为维护者,审查 Pull Request 是你需要经常做的事情。本文档收录了一些 Exercism 特有的 Pull Request 审查准则。

审查练习的 Pull Request

概念练习或实践练习的 Pull Request 审查,会因为这类练习规则繁多而让人望而生畏。因此,维护者做一次初审往往要花上两三个小时,并产生几十条评论。对于概念练习,还有一些目标和内容相似的文件(例如练习介绍和概念介绍),必须先把其中一个做到完美,再向其他文件扩展。

为了帮助简化这一流程,我们提出了以下建议。

建议:由一位资深维护者负责初审

让恰好一位资深维护者负责初审,原因如下:

  • 不会有重复的审查工作
  • 贡献者和维护者会作为搭档一起处理这个 Pull Request,希望能让贡献者觉得自己不是孤军奋战
  • 不会出现其他维护者相互矛盾的审查评论

建议:以wip状态合并

当贡献者和维护者都对练习满意后,这个练习应该将其status设为wip(进行中)后合并。处于该状态的练习对学生不可用,但我们的顶级导师可以查看(等我们未来某个时候实现之后)。这些高声誉用户随后可以测试该练习,并创建 issue 或 Pull Request 来修复或改进它。

这种方法的主要好处是:

  • 免去了原本的贡献者与维护者搭档必须把一切做到完美的负担
  • 不会产生多方发声、规模巨大的 Pull Request 反复修改(这类流程极难管理)

审查实践练习的 Pull Request

建议:考虑这个改动是否真的应该属于 problems-specifications

实践练习的部分内容(例如它的介绍)来自 problems-specifications 仓库 中定义的(共享)元数据。在审查修改此类内容的 Pull Request 时,考虑这个改动是否也可能让其他 track 受益。如果是,建议贡献者向 problems-specifications 仓库 中对应的文件提交 Pull Request。

一般审查建议

建议:每个 Pull Request 只有一位主要审查者

每个 Pull Request 都应该有一位主要审查者(由接下它的那位维护者担任)。其他维护者和/或社区成员应扮演次要角色。

处于次要角色的人主要有两种方式可以为审查做出贡献:

  • 校对拼写/语法,但_只能在主要审查者的初审完成之后_。如果贡献者收到拼写/语法方面的审查,改好之后,又有维护者过来要求他们做更根本性的改动,会让他们很受挫。换句话说:校对是在根本性改动理清_之后_才做的事(或者可能放在后续的 Pull Request 里)。
  • 以_不要求审查者采取行动的方式_指出问题。如果你评论的是主要审查者应该考虑或可能遗漏的内容,请把你的评论写成表达看法或采用提问的形式。这样贡献者就能清楚地知道你并不是在要求他们做改动,也就不会那么困惑,还能降低主要审查者感到“被削弱”的可能。

建议:不要评论无关的事情

审查 Pull Request 时,_只_评论与这个 Pull Request 直接相关的内容。对于其他任何事情,请开一个 issue,或者创建一个单独的(后续)Pull Request。

建议:链接到文档

只要有可能,尽量链接到能说明你_为什么_要对某件事发表评论的文档。这能大大降低讨论变得充满争执的可能。

建议:向其他团队寻求帮助

如果你想请人帮忙审查某个 Pull Request,我们有两个特定的团队可以呼叫:

  • @exercism/reviewers:用于任何一般性的审查
  • @exercism/github-actions:用于任何关于 GitHub actions 的问题