0

Assembla は、使用して組織のすべてのコミットを取得する簡単な方法を提供しapi.assembla.com/v1/activity.json 、ユーザーが参加しているすべてのスペース (リポジトリ) から選択した日付のコミットを取得できるようにするパラメーターを使用します。

Github に同様の方法はありますか?

Github でこれらを見つけました:
/repos/:owner/:repo/commits
選択した日付のコミットを取得するためのパラメータから、パラメータまで受け入れます。しかし、すべてのリポジトリからコミットが必要なので、それらすべてのリポジトリをループして、各リポジトリのコミットをフェッチする必要があります。

/users/:user/events
これは、ユーザーのコミットを示しています。組織内のすべてのユーザーをループするのに問題はありませんが、特定の日付を取得するにはどうすればよいですか?

/orgs/:org/events
これは、すべてのリポジトリのすべてのユーザーのコミットを示していますが、特定の日付を取得する方法がわかりませんか?

4

2 に答える 2

0

/users/:user/eventsエンドポイントを使用する際の問題は、が取得されないことPushEventと、非コミットイベントをスキップして、APIへの呼び出しをさらに実行する必要があることです。認証されていると仮定すると、ユーザーが過度にアクティブでない限り、安全である必要があります。

なぜなら/orgs/:org/events、それらは何のパラメーターも受け入れないと思いますが、APIデザイナーに確認することはできます。

そして、あなたがよく知らない場合に備えて、これらはすべてページ付けされた結果です。したがって、Linkヘッダーで最初まで戻ることができます。私のライブラリ(github3.py)は、これを自動的に行うためのイテレータを提供します。また、必要なイベントの数を指定することもできます。(コミットなどと同じ)。しかし、ええ、GitHubのAPI担当者と話した後、編集に戻ります。

編集会話

于 2013-01-09T15:56:22.177 に答える
0

GitHub アーカイブ プロジェクト ( http://www.githubarchive.org/ ) と、Google の BigQuery を使用してアーカイブをクエリする機能を確認してください。これは仕事に最適なツールのように思えます -- 1 回のクエリで必要なものを正確に取得できると確信しています。

もう 1 つのオプションは、GitHub API を呼び出すことです。つまり、組織のすべてのイベントを繰り返し処理し、日付範囲基準とイベント タイプ基準 (コミット) を満たさないイベントを除外します。ただし、API 呼び出しでは日付範囲を指定できないため、関心のあるイベントを取得するために多くの呼び出しを行うことになるでしょう。日付範囲内の最初の結果を含むページを見つけるために、0 から始まるすべてのページを反復処理する必要がないことに注意してください。コミットを含むページを見つけるために、ページ番号に対して (バリエーションの) 二分探索を実行するだけです。日付範囲内で、日付範囲を超えるまで両方向に繰り返します。これにより、API 呼び出しの回数を減らすことができます。

于 2013-01-09T18:17:14.797 に答える