在所有阅读的地方,我都可以使用此GraphQL查询获得GitHub存储库的最新提交:
{
repository(owner: "petermorlion", name: "RedStar.Amounts") {
defaultBranchRef {
name
target {
... on Commit {
history(first: 1) {
edges {
node {
committedDate
}
}
}
}
}
}
}
}
这有效。对于此存储库。如您所见(在撰写本文时),GraphQL explorer和the GitHub UI都说5月7日是最近一次提交:
但是,如果我在另一个存储库上运行它,则会得到第一次提交。将所有者更改为ystk
,将存储库名称更改为debian-libidn
。 GraphQL告诉我最新的提交是2009年10月13日:
但是the GitHub UI显示实际上是2011年5月13日:
我的查询错误吗?我是否应该在某个地方添加orderby
(我发现无法将其添加到history
)?
答案 0 :(得分:5)
GraphQL查询实际上是正确的。
出现问题的地方似乎是较旧的提交,尽管该提交发表于2009年,但确实比2011年更新。此处较新的术语是指被推后的位置比另一个位置晚。这意味着修改了提交的时间戳,这可能是由于当时作者的时钟配置错误所致。
主页将始终显示最近推送的提交,例如对于debian-libidn,它显示了2009年的提交。
要进一步详细说明,您可以检索Commit
的三个与时间戳相关的属性:
committedDate
:在本地创建提交的日期。在更改提交并受作者的时钟影响时更新
authoredDate
:默认情况下与committedDate
相同,可以在提交更改时使用--date
可选参数进行更改,这也受作者的时钟影响
pushedDate
:根据服务器的时间(在本例中为GitHub的时间)将提交推送到存储库的日期
从上面看来,您似乎更喜欢使用pushedDate
,因为这将给出提交被推送到仓库时的真实提交顺序。