首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GitHub REST和GraphQL API正在返回不同的数据。

GitHub REST和GraphQL API正在返回不同的数据。
EN

Stack Overflow用户
提问于 2022-11-04 20:43:08
回答 2查看 92关注 0票数 1

我正在从GitHub中收集一些数据。这个特定PR的RESTful URL显示它有一个merge_commit_sha值:https://api.github.com/repos/ansible/ansible/pulls/15088

但是,当我尝试使用GitHub GraphQL API获取相同的PR时,它显示它没有任何mergedCommit值。

代码语言:javascript
运行
复制
  resource(
    url: "https://github.com/ansible/ansible/pull/15088"
  ) { 
    ...on PullRequest {
      id
      number
      title
      merged
      mergeCommit {
        message
      }
    }
  }

对于上下文,感兴趣的PR实际上是合并的,并且应该具有合并的提交值。我正在寻找关于这两个API之间的区别的解释。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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对现有对象进行筛选。

票数 0
EN

Stack Overflow用户

发布于 2022-11-10 05:04:49

我觉得这是个bug,因为如果您查询另一个PR (如45454 ),它可以返回mergeCommit

代码语言:javascript
运行
复制
{
  "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"
      }
    }
  }
}

还可以找到在遇到的其他问题和在中遇到的另一个类似问题。我建议你可以尝试在向他们提出这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74322757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档