2015-11-19 11 views
9

私はこのgithub apiを使ってレポのすべての投稿者を取得しようとしています。github apiを使用してレポの貢献者をすべて取得する方法

私が間違っていないと、それはまた、リポジトリに500人以上の寄稿者がいる場合、それらの500人だけを与え、残りは匿名としてマークされることも教えてくれます。

パフォーマンス上の理由から、リポジトリ内の最初の500人の著者の電子メールアドレスだけがGitHubユーザーにリンクされます。

このレポlinux kernelは、APIごとに、私はAPIを介して、少なくとも500人の貢献者を取得する必要があり、5K +貢献しています。

は私がcurl -I https://api.github.com/repos/torvalds/linux/contributors?per_page=100

は、私が唯一の3ページを取得行うと(PER_PAGE = 100)ので、私は> 300の貢献者を得る。

すべての貢献者を取得する方法があります(「リンク」ヘッダを見て)レポ(5000+)の?

HTTP/1.1 200 OK 
Server: GitHub.com 
Date: Thu, 19 Nov 2015 18:00:54 GMT 
Content-Type: application/json; charset=utf-8 
Content-Length: 100308 
Status: 200 OK 
X-RateLimit-Limit: 60 
X-RateLimit-Remaining: 56 
X-RateLimit-Reset: 1447958881 
Cache-Control: public, max-age=60, s-maxage=60 
Last-Modified: Thu, 19 Nov 2015 16:06:38 GMT 
ETag: "a57e0f74fc68e1791da15d33fa044616" 
Vary: Accept 
X-GitHub-Media-Type: github.v3 
Link: <https://api.github.com/repositories/2325298/contributors?per_page=100&page=2>; rel="next", <https://api.github.com/repositories/2325298/contributors?per_page=100&page=3>; rel="last" 
X-XSS-Protection: 1; mode=block 
X-Frame-Options: deny 
Content-Security-Policy: default-src 'none' 
Access-Control-Allow-Credentials: true 
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval 
Access-Control-Allow-Origin: * 
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload 
X-Content-Type-Options: nosniff 
Vary: Accept-Encoding 
X-Served-By: a30e6f9aa7cf5731b87dfb3b9992202d 
X-GitHub-Request-Id: 67E881D2:146C9:24CF1BB3:564E0E55 
+0

http://stackoverflow.com/questions/18148490/how-can-i-get-more-than-100-results-from-github-api-v3-using-github-api-gem –

答えて

0

GitHubのAPIはこれをサポートしていないようですので、別のアプローチ(はるかに遅いのアプローチは)(名前を取得するために)レポのクローンを作成して、このコマンドを実行するために、次のようになります。

git log --all --format='%aN' | sort -u 
あなたが任意のレポのために、この機能が必要な場合は、簡単なスクリプトトンを書くことができ

git log --all --format='%aE' | sort -u 

:メールアドレス(貢献者名の設定の変更を防ぐ必要があり、より正確になる)で結果を得るために

hatはリポジトリのパスを受け取り、repoをクローンし、コマンドを実行して、ダウンロードしたrepoを削除します。

一方、contact GitHubでは、APIの拡張/修正の優先度を高めたいと考えています。

+0

これは無限ですGitHub APIを使用するよりも遅くなります。コントリビュータのリストを反復することによってはるかに良い方法があります。 – Whitecat

+0

@Whitecatしかし、Github APIはすべての情報を持っていないので、これはこれを行うための現在のユニークな方法です。 – deFreitas

関連する問題