对拉取请求创建评论

问题描述 投票:0回答:6

GitHub 的评论 API 似乎允许您在拉取请求上创建评论,但前提是您在 diff 中提供特定的行号进行评论。有没有办法对整个拉取请求创建评论,相当于在 GitHub Web 界面的拉取请求屏幕底部键入内容?

github github-api
6个回答
59
投票

是的,这是可能的。您引用的 API 文档的部分与行注释相关(对拉取请求中提交的特定行的注释),并且文档说:

Pull Request Review Comments 是对统一 diff 的一部分的评论。它们与提交评论(直接应用于提交,在拉取请求视图之外)和问题评论(不引用统一差异的一部分)是分开的。

您需要的是那些问题评论,这些评论在本页顶部有解释:

Pull Request API 允许您列出、查看、编辑、创建甚至合并 Pull 请求。对拉取请求的评论可以通过问题评论 API 进行管理。

因此,为了创建拉取请求评论,您实际上需要创建一个问题评论(因为拉取请求创建一个问题来管理它)。 问题评论页面证实了这一点:

问题评论 API 支持列出、查看、编辑和创建问题和拉取请求的评论。

所以,您需要提出的要求是:

POST /repos/:owner/:repo/issues/:number/comments

您如何知道要发布到哪个问题评论 URL?好吧,如果您查看获取单个拉取请求的响应,您将看到它包含一个名为

_links
的属性,并且该属性具有嵌套的
comments
属性。这是您应该用于读取和创建拉取请求评论的 URL,与上面的 POST 请求中使用的 URL 相同。


18
投票

根据 Ivan 的说法,我能够做类似的事情:

$ curl -s -H "Authorization: token ${ACCESS_TOKEN}" \
 -X POST -d '{"body": "Your Message to Comment"}' \
 "https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/issues/${PR_NUMBER}/comments"

$ curl -s -u "${GITHUB_ACCOUNT} \
 -X POST -d '{"body": "Your Message to Comment"}' \
 "https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/issues/${PR_NUMBER}/comments"

有密码提示


9
投票

使用 GraphQL API v4,您需要使用

pullrequest
模式获取拉取请求 id,然后执行
addComment
突变:

query FindPullRequestID {
  repository(owner:"bertrandmartel", name:"ustream-dl") {
    pullRequest(number:2) {
      id
    }
  }
}

mutation AddPullRequestComment {
  addComment(input:{subjectId:"MDExOlB1bGxSZXF1ZXN0MTU0NzExOTA0",body: "test comment"}) {
    commentEdge {
        node {
        createdAt
        body
      }
    }
    subject {
      id
    }
  }
}

在资源管理器中尝试一下


1
投票

使用此卷曲:

curl -s -H "Authorization: token your_token_here" \
 -X POST -d '{"body":"Some Comments"}' \
 "https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/reviews"

或Python代码:

import requests

headers = {
    'Authorization': 'token your_token_here',
}

data = '{"body":"Some Comments"}'

response = requests.post('https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/reviews', headers=headers, data=data)

print (response.json())

0
投票

对于 GitHub 上不同类型的评论感到困惑的人,请阅读以下解释。

对于任何 Pull Request,GitHub 提供了三种评论视图:对 Pull Request 整体的评论、对 Pull Request 中特定行的评论以及对 Pull Request 中特定提交的评论。

以下 Python 脚本对我有用,用于对整个 Pull 请求进行评论

import requests headers = { 'Authorization': 'Bearer {token}'.format(token=<<TOKEN>>), 'Accept' : 'application/vnd.github+json' } comment = """ <<some_comment>> """ data = { 'body': comment } requests.post('https://api.github.com/repos/{owner}/{repo}/issues/{pr_number}/comments'.format(owner=<<repo_owner>>, repo=<<repo_name>>, pr_number=<<pr_number>>), headers=headers, data=json.dumps(data))
官方页面,你可以查看

这个


0
投票
是的,您可以使用“拉取请求评论”API 对整个拉取请求创建评论。此 API 允许您对整个拉取请求创建评论和评论,而不是在差异中的特定行上创建评论和评论。以下是如何使用此 API 对整个拉取请求创建评论的示例:

POST /repos/:owner/:repo/pulls/:pull_number/comments { "body": "This is a comment on the pull request as a whole" }
要使用此 API,您需要提供具有 

repo

 范围的 OAuth 令牌。如果您希望评论与拉取请求中的特定提交相关联,您还可以包含其他参数,例如 
commit_id
。您可以在 GitHub 文档中找到有关 
pull request reviews
 API 的更多信息:
https://developer.github.com/v3/pulls/reviews/ 问候: tnpsc 第 4 组

© www.soinside.com 2019 - 2024. All rights reserved.