使用GitHub API(Rest API v3)从git存储库获取最新提交信息的最佳方法是什么。
选项1:GET /repos/:owner/:repo/commits/master
我可以假设响应中的“commit”对象是来自主分支的最新提交吗?
选项2:GET /repos/:owner/:repo/git/commits/5a2ff
或者进行两次调用,一次通过获取主分支的HEAD引用来获取SHA,然后使用返回的SHA获取提交信息。
使用GitHub API(Rest API v3)从git存储库获取最新提交信息的最佳方法是什么。
选项1:GET /repos/:owner/:repo/commits/master
我可以假设响应中的“commit”对象是来自主分支的最新提交吗?
选项2:GET /repos/:owner/:repo/git/commits/5a2ff
或者进行两次调用,一次通过获取主分支的HEAD引用来获取SHA,然后使用返回的SHA获取提交信息。
这取决于你对 "last" 的定义。
对于给定的分支(如 master
),GET /repos/:owner/:repo/commits/master
确实是最后(最近)的提交。
但你也可以考虑最后一次 push 事件:它代表了用户推送到该仓库的任何分支上的最新的和最近的提交。
https://api.github.com/users/<username>/events/public
curl
请求可以实现:curl -s -H "Authorization: token {your_github_access_token}" \
-H "Accept: application/vnd.github.VERSION.sha" \
"https://api.github.com/repos/{owner}/{repository_name}/commits/{branch_name}"
您也可以使用Github GraphQL v4来获取默认分支的最新提交:
{
repository(name: "linux", owner: "torvalds") {
defaultBranchRef {
target {
... on Commit {
history(first: 1) {
nodes {
message
committedDate
authoredDate
oid
author {
email
name
}
}
}
}
}
}
}
}
或者对于所有分支:
{
repository(name: "material-ui", owner: "mui-org") {
refs(first: 100, refPrefix: "refs/heads/") {
edges {
node {
name
target {
... on Commit {
history(first: 1) {
nodes {
message
committedDate
authoredDate
oid
author {
email
name
}
}
}
}
}
}
}
}
}
}