评审拉取请求

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

当你创建拉取请求 (PR) 并指定必需/可选的审阅者时,Azure Repos 将通知审阅者你的 PR 已准备好接受评审。 所有必需的审阅者都必须批准 PR 中的更改,然后才能将更改合并到目标分支中。 对于更改 main 分支等关键分支的 PR,团队可能已经创建了分支策略来指定审阅者或要求最少数量的审阅者。 如果分支策略将可选审阅者添加到 PR,你可以保留、要求或删除他们。 如果分支策略将必需审阅者添加到 PR,你不能将其设为可选或删除。 有关通过分支策略分配审阅者的信息,请参阅自动包括代码审阅者

如果正在评审一个 PR,请尝试给出准确且容易理解的建设性反馈。 有关查看反馈的详细信息,请参阅拉取请求反馈。 本文介绍如何在 Azure DevOps 中评审拉取请求。

只能使用浏览器在 Web 门户中评审 Azure DevOps PR。

本文介绍如何执行以下操作:

  • 查看更改
  • 使用注释
  • 编辑文件
  • 跟踪已审阅的文件
  • 对 PR 更改进行投票
  • 完成 PR

本文介绍如何执行以下操作:

  • 查看更改
  • 使用注释
  • 对 PR 更改进行投票

先决条件

  • 必须在 Azure DevOps 项目设置中启用 Repos。 如果 Repos 中心和关联页面未显示,请参阅打开或关闭 Azure DevOps 服务以重新启用 Repos。

  • 若要评审 PR,必须是 PR 所在的 Azure DevOps 项目的成员,具有基本访问级别或更高级别。

    注意

    对于公共项目,被授予利益干系人访问权限的用户对 Azure Repos 具有完全访问权限。

  • 必须在 Azure DevOps 项目设置中启用 Repos。 如果 Repos 中心和关联页面未显示,请参阅打开或关闭 Azure DevOps 服务以重新启用 Repos。

  • 若要评审 PR,必须是 Azure DevOps 项目的成员,具有基本访问级别或更高级别。 如果你不是项目成员,请添加为成员

可以使用 Azure DevOps 命令行接口 (CLI) 在 Azure DevOps Services 中管理 PR。 Azure DevOps CLI 在安装 Azure CLI 和 Azure DevOps 扩展时可用。 有关用于管理 PR 的 CLI 命令的列表,请参阅 az repos pr 命令。

查看更改

通过拉取请求,指定的审阅者可在将提议的更改应用于存储库的目标分支之前进行检查、讨论和投票。 请记住,如果使用不同分支上的相同文件进行开发,则更改可能发生冲突。 在这种情况下,需要仔细分析和解决这些冲突。 为此,可能需要手动编辑文件,以正确应用来自源分支、目标分支或两个分支的更改。 从源或目标中获取所有更改(只需单击单个按钮即可实现)可能不是最佳选择,并且可能导致丢失一些所需的更改。 这可以使用 ADO 工具来完成,或者使用开发工具(例如 Visual Studio)会更方便。

若要了解详细信息,请参阅解决合并冲突

以下步骤介绍 Azure Repos 中 PR 的审阅者如何浏览 PR 以了解建议的更改:

  1. 在 Web 浏览器中,打开 Azure DevOps 组织的团队项目。 依次选择“存储库”>“拉取请求”以列出 PR。 新打开的 PR 默认为“概述”选项卡。

  2. PR 的“概述”选项卡显示标题、说明、审阅者、链接的工作项、历史记录、状态和注释。 阅读 PR 说明以查看建议的更改。 查看注释以了解其他审阅者提出的问题。

    注意

    预计每个文件都会进行多次修改,其名称旁标有“+”号或“重命名、编辑”标签。 如果某个文件的更改超过 50%,将被视为已重命名。这是无法更改的 Git 存储库的默认阈值。

    Azure Repos PR 概述选项卡的屏幕截图。

  3. 选择“文件”选项卡以查看 PR 源分支中的所有内容更改。 初始视图显示所有文件更改的摘要视图。 选择文件旁边的“查看”按钮以仅查看该文件的更改。 如果已修改文件,“视图”按钮将打开差异视图。 如果已添加或删除文件,“查看”按钮将打开内容窗格。

    PR 的“文件”选项卡中的更改摘要视图的屏幕截图。

    注意

    出于性能原因,摘要视图不会显示大于 0.5 MB 的文件的更改。

  4. 在文件的差异视图中,可以选择“并排”或“内联”差异布局。

    PR 的“文件”选项卡中的并排差异视图的屏幕截图。

    提示

    对于任何大于 5 MB 的单个文件,差异视图将显示截断的文件内容。 如需完整内容的差异视图,请使用本地差异工具下载并查看此类文件。

    使用左侧文件树查看另一个文件,或者选择文件树的根以查看所有文件更改的摘要视图。

  5. 若要查看特定推送引入源分支的变更集,请从更改下拉列表中选择一个或多个变更集。 选择一个或多个变更集时,差异视图将更新为仅显示所选变更集的更改。 如果自上次评审以来已将更改推送到 PR,而你只想查看新更改,此功能非常有用。 更改下拉列表使用每个推送操作中最终提交的提交消息来命名每个变更集。

    PR 的“文件”选项卡中“变更集”部分下拉列表的屏幕截图。

    提示

    从更改下拉列表中选择多个变更集时,按住 Shift 键。

  6. 选择“更新”选项卡可查看所有推送的变更集,以确保未错过任何源分支更改。 变更集带编号,最新的变更集显示在列表顶部。 每个变更集都会显示在该推送操作中推送的提交。 强制推送的变更集不会覆盖变更集历史记录,并且并且会像其他变更集一样显示在变更集列表中。

    PR 的“更新”选项卡中的变更集列表的屏幕截图。

  7. 选择“提交”选项卡,查看源分支与目标分支分离后的提交历史记录。 如果 PR 作者强制推送不同的提交历史记录,则“提交”选项卡中的提交历史记录将被覆盖,因此“提交”选项卡中显示的提交可能与“更新”选项卡中显示的提交不同。

    PR 的“提交”选项卡中的提交列表的屏幕截图。

为了快速了解 PR 状态,PR“概述”选项卡汇总了用于判断 PR 通过或失败的检查、要求和分支策略。 在某些情况下,摘要会显示状态检查日志中的失败消息片段。 概述仅列出失败的策略,但可以通过选择“查看 <n> 检查”来查看所有通过和失败的策略检查。

在 PR“概述”选项卡上,可以查看 PR 说明和注释以了解建议的更改,并查看其他审阅者提出的问题。

显示 PR 概述选项卡的屏幕截图。

审阅文件

选择 PR“文件”选项卡以查看对拉取请求的目标分支旁的源分支所做的实际更改。

注意

Azure DevOps 拉取请求和 Azure DevOps 分支比较的不同变化是由不同的比较方法造成的。

git diff 命令有两种比较方式:双点 (git diff A..B) 和三点 (git diff A...B)。 默认情况下,拉取请求显示三点差异,而分支比较显示两点差异。

例如:

      C---D---E branch
     /
A---B---F---G   master

拉取请求:git diff branch...master 将仅生成 C、D 和 E 提交。 分支比较:git diff branch..master 将生成 C、D、E、F、G 提交。

有关更多详细信息,请参阅 three-dot-and-two-dot-git-diff-comparisonsgit diff

Azure Repos PR 的“文件”选项卡中的文件差异视图的屏幕截图。

注意

查看单个选定文件的差异时,文件大小限制为 5 MB。 若要查看和比较大于 5 MB 的文件,可以下载文件并使用本地差异工具查看。 查看文件集合的差异时,出于性能原因,每个文件的大小限制为 0.5 MB。

审阅更新

从“所有更新”下拉列表中查看以前版本的代码。

显示 Azure Repos PR 的“文件”选项卡中 PR 更新的屏幕截图。

对分支的每次更新都会向列表和 PR 的“更新”选项卡上添加一个新版本。 当你选择不同的更新时,差异视图也会更新以显示每个 PR 版本中文件之间的差异。

离开 PR 后也能通过单步执行自上次评审以来所做的更改来获知 PR 更新。

在“更新”选项卡上浏览作者的更改列表。

浏览作者的更改列表。

在“提交”选项卡上查看并选择对分支的提交所做的更改。

显示 Azure Repos PR 的“提交”选项卡中提交列表的屏幕截图。

使用注释

PR 作者和审阅者可以通过添加和响应 PR 注释来相互通信。 评审 PR 时,请使用注释指出对所建议更改的疑问、建议更改以及响应以前的注释。 旨在获得准确且易于理解的建设性反馈。 使用收件人 @username 直接向其寻址。 使用 #workitemID 引用工作项,并使用 !pullrequestID 引用其他 PR。 有时,PR 作者会出于文档目的为自己创建注释。

在注释中提供反馈

如果你的反馈适用于文件中的特定行或行范围,请在文件中的该位置添加注释:

  1. 在 PR 的“文件”选项卡中,将鼠标悬停在要批注的行上,然后选择注释按钮 以打开内联注释框。 还可以选择多行,然后选择将鼠标悬停在这些行上时显示的注释按钮。

    Azure Repos PR 中注释图标的屏幕截图。

  2. 在注释框中输入注释,然后选择“批注”。

    Azure Repos PR 的“文件”选项卡中的注释框的屏幕截图。

如果反馈适用于整个文件,请通过从文件选项菜单中选择“添加注释”来添加文件级注释:

Azure Repos PR 的“文件”选项卡中的文件树上下文菜单的屏幕截图。

若要提供与特定文件无关的常规反馈,请在“概述”选项卡中添加注释:

Azure Repos PR 的“概述”选项卡中的注释框的屏幕截图。

PR 审阅者还可以使用注释对特定文件行提出更改建议,如下一部分所述。

在注释中提出更改建议

可以使用注释为文件中的一行或多行提出替换文本建议:

  1. 在 PR 的“文件”选项卡中,将鼠标悬停在要批注的行上,然后选择注释按钮 以打开内联注释框。 还可以选择多行,然后选择将鼠标悬停在这些行上时显示的注释按钮。 如果接受,建议的内容将替换添加注释的行。

    Azure Repos PR 中注释图标的屏幕截图。

  2. 选择注释框下的灯泡图标,在隔离代码块的注释框中提出更改建议,然后选择“批注”。 如果向并排差异视图的原始代码(左侧)添加注释,则不会看到灯泡图标。

    显示如何在 Azure Repos PR 的“文件”选项卡中提出更改建议的屏幕截图。

PR 作者可以通过以下方式接受你的建议:

  1. 选择“应用更改”以暂存更改,以便为提交做好准备。

    显示如何在 Azure Repos PR 的“文件”选项卡中接受建议的更改的屏幕截图。

  2. 选择“提交所有更改”以提交所有暂存更改。 PR 作者可以通过选择“撤消更改”取消暂存建议。

    显示如何在 Azure Repos PR 的“文件”选项卡中提交所有更改的屏幕截图。

编辑或删除注释

可以通过将鼠标悬停在注释上方并选择“编辑”或“删除”图标来编辑或删除注释:

显示 PR 注释中的编辑和删除按钮的屏幕截图。

点赞注释

PR 作者和审阅者可以通过将鼠标悬停在注释上并选择竖起大拇指图标来给他们自己或其他人的注释点赞:

显示 PR 注释中的“点赞”按钮的屏幕截图。

带点赞的注释会显示一个实心的竖起大拇指图标和点赞数。 将鼠标悬停在竖起大拇指图标上可查看给注释点赞的人员列表。

显示 PR 注释中注释点赞数的屏幕截图。

回复注释

PR 作者应回复注释,让审阅者知道他们如何处理反馈和建议:

  1. 若要回复注释,请在“编写答复”字段中键入你的回复。 使用收件人 @username 直接向其寻址。 使用 #workitemID 引用工作项,并使用 !pullrequestID 引用其他 PR。

    显示回复 PR 注释的位置的屏幕截图。

  2. 输入答复后,如果是最终答复,请选择“回复并解决”。 否则,选择“回复”。

    显示如何回复和/或解决 PR 注释的屏幕截图。

    如果选择“回复并解决”,注释状态将更改为“已解决”。 PR 作者还可以直接更改注释的状态,如下一部分所述。

更改注释状态

新注释最初具有“活动”状态,PR 作者在 PR 评审过程中会更新该状态,以指示他们如何处理审阅者的反馈和建议。 PR 作者可以从状态下拉列表中选择注释状态:

PR 注释中的注释状态选项的屏幕截图。

  • 活动:新注释的默认状态。

  • 挂起:此注释中的问题正在审查中,有待商榷。

  • 已解决:此注释中的问题已解决。

  • 不会修复:此注释中的问题已明确但不会修复。

  • 已关闭:此注释中的讨论已结束。

PR 作者和审阅者可以通过筛选评论状态来跟踪 PR 进度,如下一部分所述。

向 PR 添加注释以提出建议、回复先前的注释,并指出所建议更改存在的问题。

  • 在 PR 的“文件”选项卡中内联注释,方法是将鼠标悬停在要批注的行上,然后选择注释按钮。显示 Azure Repos PR 中的“注释”按钮的屏幕截图。 .

    Azure Repos PR 中的注释的屏幕截图。

  • 通过在“概述”选项卡上添加注释,提供不绑定到特定代码行的反馈。

  • 使用 @username 直接在注释中提及作者或其他审阅者,并使用 #workitemID 引用工作项。 还可以使用 !pullrequestID 引用其他 PR。

编辑、删除或点赞注释

若要编辑或删除注释,请将鼠标悬停在注释上,然后选择铅笔图标以编辑注释,或选择垃圾图标以删除注释。

若要点赞你自己或其他人的注释,请将鼠标悬停在注释上,然后选择竖起大拇指图标。 带有点赞的注释会在注释列表中显示一个已填充图标(大拇指)和点赞数。 将鼠标悬停在图标上可查看点赞该注释的人员列表。

显示 PR 注释中的编辑、删除和点赞按钮的屏幕截图。

喜欢注释

若要喜欢你自己或其他人的注释,请选择心形图标。 将鼠标悬停在注释中的图标上,可查看喜欢该注释的人员列表。

筛选注释

可以通过从注释筛选器下拉列表中选择筛选器选项,选择“概述”选项卡上显示的注释或更新。 例如,选择“新增内容”筛选器选项以查看自上次打开 PR 以来的新注释和更新。 每个筛选器选项都显示其类别的项数。

显示 PR 的“概述”选项卡中的注释筛选器选项的屏幕截图。

可以选择在“概述”选项卡上显示哪些注释和更新。第一次评审代码时可隐藏一些注释和更新,免得它们碍事。 还可以仅显示自上次访问 PR 以来的新增内容。

若要筛选注释和更新,请选择注释列表上方的“显示所有内容(n)”按钮,然后选择其中一个筛选选项。 视图将更改为仅显示选定的注释和更新。 按钮标签将更改以显示筛选条件和显示的项数。

显示用于筛选 PR 中的注释列表的选项的屏幕截图。

处理注释

可以直接从 Web 上的“代码”中的“文件”选项卡对分支进行快速更新。

显示用于直接在 Azure Repos 中更新代码的“编辑”按钮的屏幕截图。

回复和解决注释

回复注释并更新注释状态,让审阅者知道你如何处理他们的注释和建议。

  • 若要解决注释而不回复,请选择注释下的“解决”。
  • 若要回复注释,请在“编写答复”字段中键入你的回复,然后选择“回复”。
  • 要回复并解决注释,请在“编写答复”字段中键入你的回复,然后选择“回复并解决”
  • 在答复中使用 @username 回复特定审阅者,并使用 #workitemID 引用工作项。 还可以使用 !pullrequestID 引用其他 PR。

新注释最开始为“活动”状态。 选择“解决”或“回复并解决”可将注释状态更新为“已解决”

显示如何在 Azure Repos PR 中解决注释的屏幕截图。

注释解决下拉列表中提供了更多选项:

注释解决下拉列表中更多选项的屏幕截图。

  • 活动:注释仍在评审中。
  • 挂起:此注释中的问题将得到解决,但尚未修复。
  • 已解决:此注释中提出的问题已解决。
  • 不会修复:注释中的建议已明确,但此 PR 不会解决该问题。
  • 已关闭:有关此注释的讨论已结束。

若要跟踪已审阅的文件,请选择 PR 中某个文件旁边的“更多选项”,然后选择“标记为已审阅”。

编辑文件

为方便起见,PR 作者可以直接在 Azure Repos 中编辑文件。 例如,你可能接受了审阅者建议的代码更改,并希望在其他位置进行类似的更改。

  1. 选择“存储库”>“文件”,选择 PR 源分支,选择一个文件,然后选择“编辑”。

    用于更新 Azure Repos 中的文件的“编辑”按钮的屏幕截图。

  2. 在编辑器中进行更改,然后选择“提交”以打开“提交”对话框。

    Azure Repos 中“提交”按钮的屏幕截图。

  3. 在“提交”对话框中,根据需要编辑提交消息,然后选择“提交”以提交并将更改推送到 PR。

    Azure Repos 中“提交”对话框的屏幕截图。

跟踪已审阅的文件

PR 审阅者可以通过从文件选项菜单中选择“标记为已审阅”或选中文件或文件夹旁边的复选框来跟踪审阅的文件:

PR 的“文件”选项卡的“文件选项”菜单中“标记为已审阅”选项的屏幕截图。

对 PR 更改进行投票

PR 审阅者可以通过从投票下拉列表中选择投票选项来对 PR 进行投票。 PR 页面上的审阅者图标将显示其投票的指示。

Azure Repos PR 中的投票选项的屏幕截图。

投票选项包括:

  • 批准:批准 PR 中建议的更改。 此选项只是一个投票,不代表批准 PR。

  • 批准,同时提出建议:批准 PR 中建议的更改,并提供可选的改进建议。 此选项只是一个投票,不代表批准 PR。

  • 等待作者:要求作者查看审阅者注释。 处理完注释后 PR 作者应告知审阅者,以便审阅者可重新审阅代码。 如果所需的审阅者设置了此投票选项,则投票将阻止 PR 批准。

  • 拒绝:表示不接受更改。 选择此选项时,请添加说明原因的注释。 如果所需的审阅者设置了此投票选项,则投票将阻止 PR 批准。

  • 重置反馈:清除投票。 没有投票并不妨碍 PR 完成

使用 PR 右上角的按钮对 PR 更改进行投票。 默认选项为“批准”,但你可以从下拉列表中选择其他选项:

显示 PR 投票选项的屏幕截图。

  • 批准:批准 PR 中建议的更改。
  • 批准,同时提出建议:批准 PR,但提供可选的改进建议。
  • 等待作者:不批准更改,并要求作者查看注释。 作者解决完你的问题后应告知你,以便你再次评审代码。
  • 拒绝:不接受更改。 在 PR 中留下注释以解释原因。
  • 重置反馈:删除投票。

完成 PR

PR 作者可以选择 PR 解决选项:

Azure Repos PR 中的 PR 解决选项的屏幕截图。

  • 完成:如果所有必需的审阅者都已批准 PR,并且满足所有必需的分支策略,将立即完成该 PR。

  • 设置自动完成:当所有必需的审阅者批准 PR 并满足所有必需的分支策略时自动完成 PR。

  • 标记为草稿:将 PR 设置为草稿状态以指示它尚未准备好评审。 对于草稿 PR,可以选择“发布”以删除其草稿状态,并将其标记为可供评审。

  • 放弃:关闭 PR。 对于已放弃的 PR,可以选择“重新激活”将其还原。

有关完成 PR 的详细信息,请参阅完成拉取请求

后续步骤