2015-11-19 137 views
9

我想要使用此github api得到回購的所有貢獻者。如何檢索使用github api回購的所有貢獻者

如果我沒有錯,它也告訴我,如果有超過500個回購人的貢獻者,它只會給他們500個,其餘的被標記爲匿名。

出於性能原因,只有存儲庫中的前500個作者電子郵件地址將鏈接到GitHub用戶。

這個回購linux kernel有5K +貢獻者,根據api我應該通過API獲得至少500個貢獻者。

當我做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會採取存儲庫路徑,克隆回購,運行命令,然後刪除下載的回購。

與此同時,你可以在contact GitHub希望他們增加優先級擴大/修復他們的API。

+0

這是無限的比使用GitHub API慢。遍歷貢獻者列表有更好的方法。 – Whitecat

+0

@Whitecat但是Github API並不是所有的信息,那麼這就是目前獨特的方式。 – deFreitas