2016-12-02 1 views
0

JSONとしてコミット履歴を取得しようとしていて、txtファイルに出力しようとしています。cURLを使用して特定の期間のgitコミット履歴を取得するにはどうすればよいですか?

curl https://api.github.com/repos/username/repo/commits > commitHistory.txt 

上記のカールの表記では、コミット履歴の最初のページしか取得できません。私は完全なコミットの履歴を取得するか、それを行う際に日付範囲を設定したいと考えています。私はどうすればいいのですか?

+0

リポジトリを複製できず、 'git log remotes/branch'だけの理由がありますか?このスクリプトを作成しようとしている場合は、[UNIXツールでJSONを解析する](http://stackoverflow.com/questions/1955505/parsing-json-with-unix-tools)を参考にしてください。 – Pockets

答えて

2

あなたは、特定の期間にコミットを取得するためにsinceuntilパラメータを使用することができます。詳細については

curl https://api.github.com/repos/username/repo/commits?since=2016-11-01T00:00:00Z&until=2016-11-01T23:59:59Z 

を:api docを参照してください。

1

GitHubからのAPIリクエストは大きな結果セットに対して自動的に改ページされるため、Link:ヘッダーを調べて、さらに多くの結果がある間にさらなるリクエストを行う必要があります。 API documentationは、詳細情報を提供しています。

複数のアイテムを返すリクエストは、デフォルトで30個のアイテムにページされます。 ?pageパラメータでさらにページを指定できます。一部のリソースでは、?per_pageパラメータを使用してカスタムページサイズを最大100に設定することもできます。技術的な理由から、すべてのエンドポイントが?per_pageパラメータを遵守しているわけではありません。たとえば、eventsを参照してください。

curl 'https://api.github.com/user/repos?page=2&per_page=100'

ページ番号は1ベースであり、?ページパラメータを省略すると、最初のページを返すように注意してください。

ページ設定の詳細については、Traversing with Paginationのガイドをご覧ください。

github3.py(または同等のもの)のようなPythonライブラリを使用して、これを行うこともできます。これはページ設定を処理します。

具体的な日付範囲については、philipjkim's answerが正しいです:sinceuntilのパラメータを使用してください。

関連する問題