我想知道是否有一种 hacky 方法来获取 Java 中特定 GitHub 存储库中分支的最新提交的提交 SHA。据我所知,GitHub API 只有一个钩子可以访问完整的提交信息,而不仅仅是 API。有人有办法做到这一点吗?
问问题
717 次
2 回答
2
按照 cjc343 的建议,使用refs api :
GET /repos/:owner/:repo/git/refs/:ref
例如:
$ curl https://api.github.com/repos/twitter/bootstrap/git/refs/heads/master
{
"ref": "refs/heads/master",
"url": "https://api.github.com/repos/twitter/bootstrap/git/refs/heads/master",
"object": {
"sha": "d991ef2ab1b4d156c7e5d33d052d66f8eaafc460",
"type": "commit",
"url": "https://api.github.com/repos/twitter/bootstrap/git/commits>/d991ef2ab1b4d156c7e5d33d052d66f8eaafc460"
}
}
您可以在将其object.sha
解析为 JSON 后提取,或者本着“hacky”的精神,通过管道:
| grep \"sha\": | cut -f4 -d\"
要得到:
d991ef2ab1b4d156c7e5d33d052d66f8eaafc460
于 2013-07-17T14:04:49.713 回答
0
这可能不是您想要的(不是 Java)。但是,使用基于 java 的 ssh-api和以下命令可以实现此目的。
git ls-remote git@github.com:<github username>/<git project name>.git
以下是示例输出:
4de51ba41fba357ac9ce63f098451cd1fc2dacbe HEAD
4de51ba41fba357ac9ce63f098451cd1fc2dacbe refs/heads/master
cc42dc12a972dab122030b046440f47e0485e321 refs/pull/1/head
73629fe86def6fef896abd32637b97fddf8cd3b4 refs/pull/1/merge
您当然可以通过在上述命令末尾附加所需的分支名称或 HEAD 来过滤它。
git ls-remote git@github.com:<github username>/<git project name>.git <branch-name>
或者
git ls-remote git@github.com:<github username>/<git project name>.git HEAD
于 2013-07-17T21:29:40.143 回答