15

GitHub API の使用中に問題/質問に遭遇しました。

単一のタグの後に作成されたすべてのタグのリストが必要です。これを行う唯一の方法は、タグを日付で比較することです。ただし、API からの結果は日付順ではありません。

API の結果 (rails リポジトリの例):

API の結果

Web インターフェースからの結果:

ウェブインターフェースの結果

私が期待していたのは、日付順に並べられたリストです。ただし、写真でわかるように、API は v4.0.0 のリリース前に v4.0.0rc1 と v4.0.0rc2 を返していますが、リリース候補の後に 4.0.0 がリリースされています。サーバー側で注文する作成/コミット日さえありません。

リリース API も解決策ではありません。この API は、タグによって作成されたリリースではなく、Github によって作成されたリリースのみを返します。

タグを日付順に並べ替える方法はありますか?

前もって感謝します!

ルベン

4

3 に答える 3

4

編集: これは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);
};

敬具

于 2015-12-12T00:50:25.017 に答える