拉取请求审查

如果你被选中进行审查,你可以对许多更改发表评论、提出建议,并最终使用以下之一来提交你的审查意见:

  • 评论

  • 批准

  • 请求更改

在上一节中,我重点介绍了与拉取请求作者相关的功能。在本节中,我将描述一个帮助审查者进行审查并向作者提供适当反馈的功能。

在拉取请求中审查提议的更改

你可以通过一次查看一个文件的更改来开始你的审查。如果你将鼠标悬停在行上,你会看到左侧的 + 图标。你可以使用它添加单行评论,或者通过拖动它选择多行,创建多行评论。如果你有评论,选择 “开始审查” 来开始审查过程,但还不提交评论。如果你添加更多评论,按钮会变为 “添加审查评论”;你可以在审查中添加任意数量的评论。评论在你提交审查之前仅对你可见!你可以随时取消审查。

将文件标记为已查看

在审查时,你会在文件顶部看到一个进度条。当你完成一个文件的审查后,可以选择 “已查看” 复选框。该文件将被折叠,进度条将显示进度(见图 3.14)。

image 2024 12 26 21 59 48 479
Figure 1. 图3.14 – 将文件标记为已查看

实践——提出建议

最佳的反馈方式是通过提出建议,作者可以轻松地将这些建议集成到他们的分支中。这个功能非常重要,值得尝试一下,如果你从未使用过。下面是操作步骤:

  1. 打开你在之前实践中创建的仓库的 fork:https://github.com/<你的用户名>/AccelerateDevOps

    在 fork 中,导航到 Chapter 3 | Review Changes (ch3_pull-request/Review-Changes.md)。该文件还包含了操作说明,方便你在浏览器和书本之间无需频繁切换。

    点击代码块右上角的复制图标,复制示例源代码。

  2. 导航到 src/app.js(通过 markdown 链接)。选择你在之前操作中创建的分支,然后点击右上角的编辑图标(铅笔图标)(见图 3.15):

    image 2024 12 26 22 04 30 562
    Figure 2. 图 3.15 – 编辑代码文件以添加示例代码
  3. 删除第 2 行,并按 Ctrl + V 粘贴代码。

  4. 直接提交到你 pull request 的源分支。

  5. 返回到 pull request,查找 Files changed 下的 src/app.js。注意,第 6 行到第 9 行的嵌套循环没有正确缩进。选中第 6 到第 9 行并创建一个多行评论。点击 Suggestion 按钮,你会看到代码已经被放入建议块中,包括空格(见图 3.16):

    image 2024 12 26 22 06 40 405
    Figure 3. 图 3.16 – 为多行评论创建建议
  6. 注意,建议代码块包含完整的代码,包括空格。在每一行的开头添加四个空格,以修正缩进。你可以将建议作为评论的一部分添加到评审中(点击 “开始评审”),或者直接将建议提交给作者(点击 “添加单个评论”)。在本次实践中,我们将建议作为单个评论添加。

将反馈融入到拉取请求中

由于你既是审阅者又是作者,你可以直接切换角色。作为作者,你可以看到所有针对你的拉取请求的建议。

你可以直接将建议提交到你的分支,或者将多个建议合并到一个提交中,然后一次性提交所有更改。将更改添加到批次中,并在文件顶部应用批次(见图 3.17):

image 2024 12 26 22 10 07 117
Figure 4. 图 3.17 – 将建议合并到代码中

建议是提供反馈和建议代码更改的好方法。它们对于作者来说非常容易整合到代码中。

提交审查

如果你已经完成了审查并添加了所有评论和建议,你可以提交审查结果。作者将会收到结果通知,并可以回复你的评论。你可以留下最终评论,并选择以下三种选项之一:

  • Approve:批准更改。这是唯一会计算在所需审查员数量中的选项!

  • Comment:提交反馈,但不做批准或拒绝。

  • Request changes:表示需要更改才能获得你的批准。

完成审查后,点击 提交审查(见图 3.18)。

image 2024 12 26 22 12 18 137
Figure 5. 图 3.18 – 完成审查

完成拉取请求

如果你想放弃在分支上的更改,可以关闭一个拉取请求而不进行合并。要将你的更改合并到目标分支中,你有三种合并选项,如下所述:

  • 创建一个合并提交(Create a merge commit):这是默认选项。它会创建一个合并提交,并将你的分支中的所有提交作为一个独立的分支显示在历史记录中。如果你有很多长时间运行的分支,这可能会使历史记录显得杂乱。你可以在此处看到该合并选项的表示:

    image 2024 12 26 22 14 25 701
    Figure 6. 图 3.19 – 使用合并提交时的 Git 历史
  • 压缩并合并(Squash and merge):所有分支中的提交将合并成一个提交。这会创建一个干净的线性历史,如果你在合并后删除分支,这是一个不错的合并方法。如果你继续在该分支上工作,不推荐使用这种方法。你可以在此处看到该合并选项的表示:

    image 2024 12 26 22 15 13 096
    Figure 7. 图 3.20 – 使用压缩并合并时的 Git 历史
  • 变基并合并(Rebase and merge):将该分支的所有提交应用到目标分支的头部。这也会创建一个线性历史,但保留了每个单独的提交。如果你继续在该分支上工作,这种方法也不推荐使用。你可以在此处看到该合并选项的表示:

    image 2024 12 26 22 15 28 456
    Figure 8. 图 3.21 – 使用变基并合并时 Git 历史看起来是线性的

选择你想要的合并方法并点击 合并拉取请求(Merge pull request)(见图 3.22):

image 2024 12 26 22 15 49 496
Figure 9. 图 3.22 – 完成一个拉取请求

修改合并消息并点击 确认合并(Confirm merge)。合并后,如果你想,你可以删除该分支。