You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Github GraphQL API返回结果与仓库页面显示值不符的技术问题

排查GitHub API v4返回数据与仓库页面不符的问题

我来帮你梳理这两个问题的原因和解决办法:

1. 发布数量(releases totalCount)不符

GitHub GraphQL API 的 releases 字段默认仅统计正式发布的版本(排除预发布版本和草稿版本),但仓库页面会展示所有可见的发布(包括带 betarc 等标签的预发布版本),这就是统计数不一致的核心原因。

要让API返回和页面一致的发布数量,只需在 releases 字段中添加 includePrereleases: true 参数(如果需要包含草稿,再加 includeDrafts: true)。修改后的查询语句如下:

{
  repository(owner: "tensorflow", name: "tensorflow") {
    id
    name
    releases(includePrereleases: true) {
      totalCount
    }
    pushedAt
  }
}

2. 最后提交时间(pushedAt)差异

你查询的 pushedAt 代表整个仓库的最后一次推送时间——这个时间可能来自任意分支的推送(比如维护分支的更新),而仓库页面显示的通常是默认分支(如main/master)的最新提交时间,二者概念完全不同。

如果要获取和页面一致的默认分支最新提交时间,需要查询默认分支的提交信息,修改后的查询语句如下:

{
  repository(owner: "tensorflow", name: "tensorflow") {
    id
    name
    releases(includePrereleases: true) {
      totalCount
    }
    defaultBranchRef {
      target {
        ... on Commit {
          committedDate
          author {
            name
          }
        }
      }
    }
  }
}

这里的 committedDate 就是默认分支的最后提交时间,和仓库页面展示的内容一致。

内容的提问来源于stack exchange,提问作者Shantanu

火山引擎 最新活动