我在使用 GitHub API 时遇到了问题。
我需要在单个标签之后创建的所有标签的列表。执行此操作的唯一方法是按日期比较标签。但是,API 的结果不是按日期排序的:
API 的结果(rails 存储库示例):
网络界面的结果:
我真正期望的是按日期排序的列表。然而,正如您在图片中看到的:API 在 v4.0.0 发布之前返回 v4.0.0rc1 和 v4.0.0rc2,而 4.0.0 在候选版本之后发布。在服务器端甚至没有要订购的创建/提交日期。
releases API 也不是解决方案。该API仅返回Github创建的版本,而不返回标签创建的版本。
有什么方法可以按日期排序标签吗?
提前致谢!
鲁本
Repositories API 当前按照“git tag”命令返回的顺序返回标签,这意味着它们按字母顺序排序。
在 Git 中按时间顺序对标签进行排序的问题在于,有两种类型的标签:轻量级标签和带注释的标签,而对于轻量级类型,Git 不存储创建日期。
发布/标签 UI 目前按标签指向的提交日期按时间顺序对标签进行排序。这又不是标签本身的创建日期,但它确实建立了事物的时间顺序。
向 API 添加此替代排序选项已在我们的功能请求列表中。
这里是为那些需要在时间创建github标签的人提供的示例代码
使用 GraphQL API v4,我们现在可以使用
field: TAG_COMMIT_DATE
内的 orderBy
按提交日期过滤标签。以下将按提交日期对标签进行升序排序:
{
repository(owner: "rails", name: "rails") {
refs(refPrefix: "refs/tags/", last: 100, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {
edges {
node {
name
target {
oid
... on Tag {
message
commitUrl
tagger {
name
email
date
}
}
}
}
}
}
}
}
这里,
tagger
内的target
字段只会填充带注释的标签,对于轻量级标签将为空。
由于
date
中的tagger
属性给出了标签的创建日期(仅适用于带注释的标签),因此可以在客户端轻松地按创建日期进行过滤(无需一一检索所有标签)
请注意,此时
orderBy.field
的可用选项为 TAG_COMMIT_DATE
和 ALPHABETICAL
(无 TAG_CREATION_DATE
)
编辑:现在可以使用 GitHub GraphQL API。
作为解决方法,有一个用于此目的的节点模块, 它基本上获取每个标签的提交详细信息: github-api-tags-full
> npm install github-api-tags-full github moment
var GitHubApi = require('github'),
moment = require('moment'),
githubTags = require('github-api-tags-full');
var github = new GitHubApi({
version: '3.0.0'
});
githubTags({ user: 'golang', repo: 'go' }, github)
.then(function(tags) {
var tagsSorted = tags.sort(byAuthorDateAsc).reverse(); // descending
console.log(tagsSorted); // prints the array of tags sorted by their creation date
});
var byAuthorDateAsc = function(tagA, tagB) {
return githubCompareDates(
tagA.commit.author.date,
tagB.commit.author.date
);
};
var githubCompareDates = function(dateStrA, dateStrB) {
return moment(dateStrA).diff(dateStrB);
};
致以诚挚的问候
您可以使用 Git References API。
这也可以返回与某个前缀匹配的所有标签。
在你的情况下,你可能想要这样的东西:
https://api.github.com/repos/rails/rails/git/matching-refs/tags/v
或者对于单一仓库:
https://api.github.com/repos/grafana/loki/git/matching-refs/tags/helm-loki-
缺点:
上行空间