我正在从GitHub中收集一些数据。这个特定PR的RESTful URL显示它有一个merge_commit_sha
值:https://api.github.com/repos/ansible/ansible/pulls/15088
但是,当我尝试使用GitHub GraphQL API获取相同的PR时,它显示它没有任何mergedCommit
值。
resource(
url: "https://github.com/ansible/ansible/pull/15088"
) {
...on PullRequest {
id
number
title
merged
mergeCommit {
message
}
}
}
对于上下文,感兴趣的PR实际上是合并的,并且应该具有合并的提交值。我正在寻找关于这两个API之间的区别的解释。
发布于 2022-11-14 18:55:16
在另一个答复中发布的这个链接包含以下解释:
与之一样,Git没有originalCommit (这很有道理)。大概原来的提交SHA已经存在了,但是graphQL API实际上检查git是否有它,而REST没有吗?
如果搜索API返回的提交SHA,则无法在回购中找到它。
https://github.com/ansible/ansible/commit/d7b54c103050d9fc4965e57b7611a70cb964ab25
由于这是一个非常老的拉请求对一个主动回购,有一个很好的机会,一些旧的提交被清理或其他维修的回购。这很难说,因为这种维护显然不是版本控制的。
另一个选项是拉请求与快速转发合并,这不涉及合并提交。但这并不能解释REST响应上的SHA。
因此,可能在某个时候,他们删除了旧的合并提交,以节省一些空间,或类似的东西。有些对象仍然指向已删除的SHAs,但是GraphQL API对现有对象进行筛选。
发布于 2022-11-10 05:04:49
我觉得这是个bug,因为如果您查询另一个PR (如45454 ),它可以返回mergeCommit
{
"data": {
"resource": {
"id": "MDExOlB1bGxSZXF1ZXN0MjE0NDYyOTY2",
"number": 45454,
"title": "win_say - fix up syntax and test issues (#45450)",
"merged": true,
"mergeCommit": {
"message": "win_say - fix up syntax and test issues (#45450)\n\n\n(cherry picked from commit c9c141fb6a51d6b77274958a2340fa54754db692)",
"oid": "f2d5954d11a1707cdb70b01dfb27c722b6416295"
}
}
}
}
https://stackoverflow.com/questions/74322757
复制相似问题