GitHub GraphQL查询未返回上一次提交

时间:2019-05-09 07:14:09

标签: github graphql

在所有阅读的地方,我都可以使用此GraphQL查询获得GitHub存储库的最新提交:

{
repository(owner: "petermorlion", name: "RedStar.Amounts") {
    defaultBranchRef {
      name
      target {
        ... on Commit {
          history(first: 1) {
            edges {
              node {
                committedDate
              }
            }
          }
        }
      }
    }
  }
}

这有效。对于此存储库。如您所见(在撰写本文时),GraphQL explorerthe GitHub UI都说5月7日是最近一次提交:

GitHub UI results

GitHub GraphQL results

但是,如果我在另一个存储库上运行它,则会得到第一次提交。将所有者更改为ystk,将存储库名称更改为debian-libidn。 GraphQL告诉我最新的提交是2009年10月13日:

GitHub GraphQL wrong results

但是the GitHub UI显示实际上是2011年5月13日:

GitHub UI correct results

我的查询错误吗?我是否应该在某个地方添加orderby(我发现无法将其添加到history)?

1 个答案:

答案 0 :(得分:5)

GraphQL查询实际上是正确的。

出现问题的地方似乎是较旧的提交,尽管该提交发表于2009年,但确实比2011年更新。此处较新的术语是指被推后的位置比另一个位置晚。这意味着修改了提交的时间戳,这可能是由于当时作者的时钟配置错误所致。

主页将始终显示最近推送的提交,例如对于debian-libidn,它显示了2009年的提交。

要进一步详细说明,您可以检索Commit的三个与时间戳相关的属性:

  • committedDate:在本地创建提交的日期。在更改提交并受作者的时钟影响时更新

  • authoredDate:默认情况下与committedDate相同,可以在提交更改时使用--date可选参数进行更改,这也受作者的时钟影响

  • pushedDate:根据服务器的时间(在本例中为GitHub的时间)将提交推送到存储库的日期

从上面看来,您似乎更喜欢使用pushedDate,因为这将给出提交被推送到仓库时的真实提交顺序。