2012-05-14 62 views
21

無論項目如何,我想知道是否有一種簡單的方法可以將單個用戶名的所有提交提交到所有公共存儲庫。如何獲取用戶的所有公共github提交

因爲我屬於多個組織,所以我試圖編譯我是貢獻者的項目列表,以及我接受了拉取請求的項目。

到目前爲止,我的google-fu和通過github api文檔查看已證明不足。

回答

16

http://zmoazeni.github.com/gitspective/是你的朋友。 :-)過濾除「推」之外的所有內容,並且您有自己的看法,儘管無需編碼工作即可自行實施。

檢查Chrome Devtools「網絡」選項卡上的內容可能會幫助您模擬API查詢,如果您想自行重做該工作。

+5

這不是**全部**貢獻。它只顯示今年所有的這一年,而不是自2011年以來。 –

1

我知道這個問題是相當古老的,但我最終編碼我自己的解決方案。

最終解決方案是找到用戶使用organization_repositorieslist_repositories服務(我正在使用octokit)提供的所有潛在儲存庫。

然後我們找到這些存儲庫上的所有活動分支(服務branches),並且他們每個人僅查找來自我們用戶(服務commits)的提交。

的示例代碼是有點廣泛,但可以發現here

OBS: As pointed out, this solution does not consider organizations and repositories where you contributed but are not part of. 
+0

這隻顯示提交回購你的組織你加入你的回購組織。它沒有顯示你不屬於,但你已經承諾的組織的開源回購。 – user1130176

+0

好點。我編輯過,所以答案很清楚。 –

9

正確的方法做,這是通過Events API

首先,你需要fetch the user's events

GET /users/:username/events 

那麼你將要過濾的項目where type is set to PushEvent響應數組。這些項目中的每一項對應於用戶的git push。該推送的提交可以在payload.commits陣列中按逆時間順序提供。

下一步是通過檢查每個提交對象的author.email屬性來過濾掉其他用戶提交的提交。您還可以訪問同一對象上的shamessageurl等屬性,並且可以通過使用distinct屬性來消除多次推送時的重複提交。

編輯:正如在評論中指出Adam Taylor,這種做法是錯誤的。我沒有RTFM,對不起。該API可讓您獲取最多300個事件,事件也限制在最近90天內。我將在這裏留下答案的完整性,但對於提交所有提交的陳述問題,它不起作用。

+0

好的答案!太糟糕了,這麼晚了,否則它會成爲頂部 – theEpsilon

+1

[本頁]的一些重要注意事項(https://developer.github.com/v3/activity/events/):事件支持[分頁](https:// developer .github.com/v3 /#分頁),但是'per_page'選項不受支持。固定頁面大小爲30個項目。最多支持10個頁面,總計300個事件。只有過去90天內創建的活動纔會列入時間表。不會包含超過90天的活動(即使時間軸中的活動總數少於300)。 –

+0

奇妙地滿足我的需求......謝謝! –

相關問題