

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 审核拉取请求
<a name="how-to-review-pull-request"></a>

您可以使用 Amazon CodeCommit 控制台查看拉取请求中包含的更改。您可以向请求、文件和特定代码行添加评论。您还可以回复其他用户所做的评论。如果存储库已[配置通知](how-to-repository-email.md)，您将在用户回复您的评论或用户评论拉取请求时收到电子邮件。

您可以使用 Amazon CLI 对拉取请求发表评论和回复评论。要查看更改，必须使用 CodeCommit 控制台、**git diff**命令或差异工具。

**Topics**
+ [审核拉取请求（控制台）](#how-to-review-pull-request-console)
+ [审核拉取请求 (Amazon CLI)](#how-to-review-pull-request-cli)

## 审核拉取请求（控制台）
<a name="how-to-review-pull-request-console"></a>

您可以使用 CodeCommit 控制台查看 CodeCommit 存储库中的拉取请求。

1. 在 [https://console.aws.amazon.com/codesuite/codemmit](https://console.amazonaws.cn/codesuite/codecommit/home) /home 打开 CodeCommit 控制台。

1. 在**存储库**中，选择存储库的名称。

1. 在导航窗格中，选择**拉取请求**。

1. 默认情况下，会显示所有处于打开状态的拉取请求的列表。选择要审核的处于打开状态的拉取请求。  
![\[打开 CodeCommit 控制台中显示的拉取请求。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-pull-request-view-list.png)
**注意**  
您可以对已关闭或已合并的拉取请求进行注释，但不能合并或重新打开该请求。

1. 在拉取请求中，选择 **Changes**。

1. 请执行以下操作之一：
   + 要为整个拉取请求添加一般注释，请在 **Comments on changes (更改注释)** 的 **New comment (新建注释)** 中，输入注释，然后选择 **Save (保存)**。您可以使用 [Markdown](https://docs.amazonaws.cn/general/latest/gr/aws-markdown.html)，也可以纯文本格式输入评论。  
![\[对拉取请求中更改的一般评论。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-commenting-changecomment.png)
   + 要向提交中的文件添加评论，请在 **Changes** 中找到该文件的名称。选择显示在文件名旁的注释图标 ![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-commentbubble.png)，输入注释，然后选择 **Save (保存)**。  
![\[在拉取请求中添加对文件的评论。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-commenting-addfilecomment.png)
   + 要向拉取请求中的已更改行添加评论，请在 **Changes** 中转到要评论的行。选择为该行显示的注释图标 ![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-commentbubble.png)，输入注释，然后选择 **Save (保存)**。  
![\[在拉取请求中添加对行的评论。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-pull-request-comment.png)

1. 要回复对提交的评论，请在 **Changes** 或 **Activity** 中，选择 **Reply**。您可以使用文字和表情符号进行回复。  
![\[在评论中添加回复和表情符号反应。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-commenting-commenttab.png)

   您可以通过选择特定表情符号反应回复来查看使用其进行回复的人员的姓名。要查看所有表情符号反应以及有关谁使用了哪些表情符号进行回复的信息，请选择**查看所有反应**。如果您使用表情符号回复了评论，则您的回复将显示在表情符号反应按钮的图标中。
**注意**  
控制台中显示的反应计数在页面加载时是准确的。要了解有关表情符号反应计数的最新信息，请刷新页面，或选择**查看所有反应**。  
![\[查看有关使用表情符号反应回复评论的用户的信息。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-comment-view-reaction.png)

1. （可选）要回复 Amazon CodeGuru Reviewer 创建的推荐，包括提供有关推荐质量的反馈，请选择**回复**。可使用反应按钮，提供有关您是批准还是不批准建议的一般信息。您可使用注释字段，提供有关反应的详细信息。
**注意**  
Amazon CodeGuru Reviewer 是一项自动代码审查服务，它使用程序分析和机器学习来检测 Java 或 Python 代码中的常见问题并推荐修复方法。  
只有当您已将存储库与 Amazon CodeGuru Reviewer 关联起来、分析已完成以及拉取请求中的代码是 Java 或 Python 代码时，您才能看到 Amazon CodeGuru Reviewer 评论。有关更多信息，请参阅 [将 Amazon CodeCommit 存储库与 Amazon CodeGuru Reviewer 关联或取消关联](how-to-amazon-codeguru-reviewer.md)。
Amazon CodeGuru Reviewer 评论只有在**对拉取请求的最新修订版发表评论时，才会显示在 “更改**” 选项卡中。它们始终显示在**活动**选项卡中。
虽然您可以对 Amazon CodeGuru Reviewer 推荐使用任何可用的表情符号反应进行回应，但只能使用竖起大拇指和竖起大拇指的表情符号反应来评估推荐的用处。  
![\[Amazon CodeGuru Reviewer 在审核工作正在进行时创建的推荐。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-pull-request-reply-bot.png)

1. 要审批拉取请求中所做的更改，请选择 **Approve (审批)**。
**注意**  
您无法批准自己创建的拉取请求。

   您可以在 **Approvals (审批)** 中，查看审批、拉取请求的审批规则以及由审批规则模板创建的审批规则。如果您最终决定不希望审批拉取请求，则可选择 **Revoke approval (撤销审批)**。
**注意**  
您只能对处于打开状态的拉取请求进行审批或撤销审批。不能对状态为“已合并”或“已关闭”的拉取请求进行审批或撤销审批。  
![\[拉取请求中的审批和审批规则。\]](http://docs.amazonaws.cn/codecommit/latest/userguide/images/codecommit-approval-rule-met.png)

## 审核拉取请求 (Amazon CLI)
<a name="how-to-review-pull-request-cli"></a>

要将 Amazon CLI 命令与一起使用 CodeCommit，请安装 Amazon CLI。有关更多信息，请参阅 [命令行参考](cmd-ref.md)。

您可以使用以下 Amazon CLI 命令查看拉取请求：
+ [**post-comment-for-pull-request**](#post-comment-reply)，用于向拉取请求添加评论
+ [**get-comments-for-pull-request**](#get-comments-for-pull-request)，用于查看拉取请求中留下的评论
+ [**update-pull-request-approval-state**](#update-pull-request-approval-state)，用于审批或撤销对拉取请求的批准
+ [**post-comment-reply**](#post-comment-reply)，用于回复拉取请求中的评论

您还可以运行以下命令，对拉取请求中的评论使用表情符号：
+ 要使用表情符号回复评论，请运行 [**put-comment-reaction**](how-to-commit-comment.md#how-to-commit-comment-cli-commit-reply-emoji)。
+ 要查看对评论的表情符号反应，请运行 [**get-comment-reactions**](how-to-commit-comment.md#how-to-commit-comment-cli-commit-emoji-view)。

**使用 Amazon CLI 查看 CodeCommit 存储库中的拉取请求**

1. 要向存储库中的拉取请求添加评论，请运行 **post-comment-for-pull-request** 命令，并且指定：
   + 拉取请求的 ID（使用 **--pull-request-id** 选项）。
   + 包含拉取请求的存储库的名称（使用 **--repository-name** 选项）。
   + 将在其中合并拉取请求的目标分支中的提交的完整提交 ID（使用 **--before-commit-id** 选项）。
   + 源分支中的提交的完整提交 ID，它在发布评论时作为拉取请求的分支的当前提示（使用 **--after-commit-id** 选项）。
   + 客户端生成的唯一等幂令牌（使用 **--client-request-token** 选项）。
   + 您的评论的内容（使用 **--content** 选项）。
   + 有关评论放置位置信息的列表，包括：
     + 所比较文件的名称，包括其扩展名和子目录（如果有，则使用 **filePath** 属性）。
     + 在比较文件中更改的行号（使用 **filePosition** 属性）。
     + 对更改的评论在源分支与目标分支之间比较“之前”还是“之后”（使用 **relativeFileVersion** 属性）。

   例如，使用此命令*"These don't appear to be used anywhere. Can we remove them?"*在名为的存储库中 ID 为的拉取请求中将有关更改的评论添加到*ahs\$1count.py*文件*47*中*MyDemoRepo*。

   ```
   aws codecommit post-comment-for-pull-request --pull-request-id "47" --repository-name MyDemoRepo --before-commit-id 317f8570EXAMPLE --after-commit-id 5d036259EXAMPLE --client-request-token 123Example --content "These don't appear to be used anywhere. Can we remove them?" --location filePath=ahs_count.py,filePosition=367,relativeFileVersion=AFTER   
   ```

   如果成功，该命令产生类似以下内容的输出。

   ```
   { 
            "afterBlobId": "1f330709EXAMPLE",
            "afterCommitId": "5d036259EXAMPLE",
            "beforeBlobId": "80906a4cEXAMPLE",
            "beforeCommitId": "317f8570EXAMPLE",
            "comment": {
                  "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar",
                  "clientRequestToken": "123Example",
                  "commentId": "abcd1234EXAMPLEb5678efgh",
                  "content": "These don't appear to be used anywhere. Can we remove them?",
                  "creationDate": 1508369622.123,
                  "deleted": false,
                  "lastModifiedDate": 1508369622.123,
                  "callerReactions": [],
                  "reactionCounts": []
               }
                "location": { 
                  "filePath": "ahs_count.py",
                  "filePosition": 367,
                  "relativeFileVersion": "AFTER"
                },
            "repositoryName": "MyDemoRepo",
            "pullRequestId": "47"
    }
   ```

1. 要查看拉取请求的评论，请运行 **get-comments-for-pull-request** 命令，并且指定：
   +  CodeCommit 存储库的名称（带`--repository-name`选项）。
   + 系统生成的拉取请求的 ID（使用 `--pull-request-id` 选项）。
   + （可选）要返回下一批结果的枚举令牌（使用 `--next-token` 选项）。
   + (可选) 一个用于限制返回的结果数的非负整数 (使用 `--max-results` 选项)。

   例如，可使用此命令查看 ID 为 42 的拉取请求的注释。

   ```
   aws codecommit get-comments-for-pull-request --pull-request-id 42
   ```

   如果成功，该命令产生类似以下内容的输出。

   ```
   {
      "commentsForPullRequestData": [ 
         { 
            "afterBlobId": "1f330709EXAMPLE",
            "afterCommitId": "5d036259EXAMPLE",
            "beforeBlobId": "80906a4cEXAMPLE",
            "beforeCommitId": "317f8570EXAMPLE",
            "comments": [ 
               { 
                  "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar",
                  "clientRequestToken": "",
                  "commentId": "abcd1234EXAMPLEb5678efgh",
                  "content": "These don't appear to be used anywhere. Can we remove them?",
                  "creationDate": 1508369622.123,
                  "deleted": false,
                  "lastModifiedDate": 1508369622.123,
                  "callerReactions": [],
                  "reactionCounts": 
                   {
                     "THUMBSUP" : 6,
                     "CONFUSED" : 1
                   }
               },
               {
                  "authorArn": "arn:aws:iam::111111111111:user/Li_Juan",
                  "clientRequestToken": "",
                  "commentId": "442b498bEXAMPLE5756813",
                  "content": "Good catch. I'll remove them.",
                  "creationDate": 1508369829.104,
                  "deleted": false,
                  "lastModifiedDate": 150836912.273,
                  "callerReactions": ["THUMBSUP"]
                  "reactionCounts": 
                   {
                     "THUMBSUP" : 14
                   }
                }
            ],
            "location": { 
               "filePath": "ahs_count.py",
               "filePosition": 367,
               "relativeFileVersion": "AFTER"
            },
            "repositoryName": "MyDemoRepo",
            "pullRequestId": "42"
         }
      ],
      "nextToken": "exampleToken"
   }
   ```

1. <a name="update-pull-request-approval-state"></a>要对拉取请求进行审批或撤销审批，请运行 **update-pull-request-approval-state** 命令，并指定：
   + 拉取请求的 ID（使用 **--pull-request-id** 选项）。
   + 拉取请求的修订 ID（使用 **--revision-id option)**）。您可以使用 [get-pull-request](how-to-view-pull-request.md#get-pull-request) 命令获取拉取请求的当前修订 ID。
   + 要应用的审批状态（使用 **--approval-state** 选项）。有效的审批状态包括 `APPROVE` 和 `REVOKE`。

   例如，使用此命令批准 ID 为、修订版 ID 为*27*的拉取请求*9f29d167EXAMPLE*。

   ```
   aws codecommit update-pull-request-approval-state --pull-request-id 27 --revision-id 9f29d167EXAMPLE --approval-state "APPROVE"
   ```

   如果成功，该命令不返回任何内容。

1. 要在拉取请求中发布对评论的回复，请运行 **post-comment-reply** 命令，并且指定：
   + 要回复的评论的系统生成的 ID（使用 **--in-reply-to** 选项）。
   + 客户端生成的唯一等幂令牌（使用 **--client-request-token** 选项）。
   + 您的回复的内容（使用 **--content** 选项）。

    例如，使用此命令将系统生成的 ID *"Good catch. I'll remove them."* 为的评论添加回复。*abcd1234EXAMPLEb5678efgh*

   ```
   aws codecommit post-comment-reply --in-reply-to abcd1234EXAMPLEb5678efgh --content "Good catch. I'll remove them." --client-request-token 123Example
   ```

   如果成功，该命令产生类似以下内容的输出。

   ```
   { 
       "comment": {
           "authorArn": "arn:aws:iam::111111111111:user/Li_Juan",
           "clientRequestToken": "123Example",
           "commentId": "442b498bEXAMPLE5756813",
           "content": "Good catch. I'll remove them.",
           "creationDate": 1508369829.136,
           "deleted": false,
           "lastModifiedDate": 150836912.221,
           "callerReactions": [],
           "reactionCounts": []
       }
    }
   ```