GitHub的评论API似乎允许您在拉取请求上创建评论,但前提是您需要提供要在差异中评论的特定行号。是否有一种方法可以在整个拉取请求上创建评论,类似于在GitHub Web界面中在底部键入评论的相应位置?
GitHub的评论API似乎允许您在拉取请求上创建评论,但前提是您需要提供要在差异中评论的特定行号。是否有一种方法可以在整个拉取请求上创建评论,类似于在GitHub Web界面中在底部键入评论的相应位置?
是的,这是可能的。你所引用的API文档部分与行注释有关(对拉取请求中特定行的注释),文档如下:
拉取请求审查评论是对统一差异部分的评论。这些与提交评论(直接应用于提交,而不在拉取请求视图之外)和问题评论(不涉及统一差异部分)是分开的。
你需要的是那些问题评论,在此页面顶部有解释:
拉取请求 API 允许您列出、查看、编辑、创建甚至合并拉取请求。可以通过问题评论 API 管理拉取请求上的评论。
因此,为了创建拉取请求评论,实际上需要创建问题评论(因为拉取请求会创建一个问题来管理它)。问题评论页面证实了这一点:
“问题评论 API 支持在问题和拉取请求上列出、查看、编辑和创建评论。”POST /repos/:owner/:repo/issues/:number/comments
_links
的属性,并且该属性具有嵌套的comments
属性。这是用于阅读和创建拉取请求注释的URL,与上面的POST请求中要使用的相同的URL。根据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"
需要密码提示
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
}
}
}
在浏览器中试试此链接可以帮助您查询GitHub上指定代码库的pull request编号,并添加相应评论。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"
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())
对于那些对GitHub上不同类型的评论感到困惑的人,请阅读以下解释。
对于任何拉取请求,GitHub提供三种评论视图:对整个拉取请求的评论、对拉取请求中特定行的评论以及对拉取请求中特定提交的评论。
以下Python脚本适用于对整个拉取请求的评论
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))
如果您需要官方页面,请查看this