我想知道如何使用 github-api 来获取项目的所有当前版本或标签。我已经在 github-api 中看到了标签的文档,但我没有看到列出所有标签或列出所有版本的方法,而只列出了 :sha 的特定标签。
5 回答
这是可能的,但文档可能不在您期望的位置。
http://developer.github.com/v3/git/refs/
您还可以请求子命名空间。例如,要获取所有标签引用,您可以调用:
GET /repos/:owner/:repo/git/refs/tags
今天早上,我收到了对我发布给 github 支持团队的同一个问题的答案。不知道如何正确地归因于答案,但这是他们的回应。
引用来自 Github 支持团队的 Ivan Žužak
您可以使用此 API 调用获取存储库的所有标签的列表:
http://developer.github.com/v3/repos/#list-tags
因此,例如,发出以下 cURL 请求将返回 libgit2/libgit2 存储库的标签列表:
$ curl -v " https://api.github.com/repos/libgit2/libgit2/tags "
注意:对于专门针对 GitHub 存储库的版本,您现在拥有(自 2013 年 9 月 25 日起),一个列出所有版本的 api:
列出存储库的版本
- 对存储库具有推送访问权限的用户将收到所有版本(即,已发布的版本和草稿版本)。
具有拉取访问权限的用户将仅收到已发布的版本。
GET /repos/:owner/:repo/releases
回复
Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4999
[
{
"url": "https://api.github.com/repos/octocat/Hello-World/releases/1",
"html_url": "https://github.com/octocat/Hello-World/releases/v1.0.0",
"assets_url": "https://api.github.com/repos/octocat/Hello-World/releases/1/assets",
"upload_url": "https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name}",
"id": 1,
"tag_name": "v1.0.0",
"target_commitish": "master",
"name": "v1.0.0",
"body": "Description of the release",
"draft": false,
"prerelease": false,
"created_at": "2013-02-27T19:35:32Z",
"published_at": "2013-02-27T19:35:32Z"
}
]
获取单个版本
GET /repos/:owner/:repo/releases/:id
在 v4,graphQL,你可以使用这个查询https://developer.github.com/v4/object/tag/
query {
repository(owner: "onmyway133", name: "Scale") {
refs(refPrefix: "refs/tags/", last: 2) {
edges {
node {
name
}
}
}
}
}
这将列出您在 Github 上的所有版本(标签)。可能需要grep
根据您的标签命名约定来调整零件:
curl -s 'https://github.com/username/reponame/tags/'|grep -o "$Version v[0-9].[0-9][0-9]"
如果从“克隆回购”部分剪切-n-粘贴 URL,请记住.git
在构建上述 URL-HTH-Terrence Houlahan 时在地址末尾砍掉