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