2014-04-27 80 views

回答

6

這應該這樣做。請注意,您將需要 jq

curl https://api.github.com/users/<user>/starred | 
    jq -r '.[].html_url' | 
    xargs -l git clone 

如果你不想使用jq你可以用這種醜陋awk

awk '/^ {4}"html_url"/&&$0=$4' FS='"' | 
+1

我認爲GitHub API有一個限制,因爲它在30次回購後停止了克隆。 –

+1

@ nighthawk24結果分頁並且API默認返回前30個。 – Kasisnu

+0

https://gist.github.com/anonymous/aebb4a0639b0af2cfd88應該使用分頁技巧。 – rubiojr

2

取代如果你沒有與任何紅寶石問題,可以安裝幾個寶石,你可以給這個鏡頭。

gem install octokit git parallel

那麼這個應該這樣做。

ruby -e "require 'octokit'; require 'git'; require 'parallel'; Parallel.each(Octokit.starred('__username__'), :in_processes=>4){|s| Git.clone(s[:html_url], s[:name])}" 

爲了提高可讀性:

require 'octokit' 
require 'git' 
require 'parallel' 

Parallel.each(Octokit.starred('__username__'), :in_processes=>4){|s| Git.clone(s[:html_url], s[:name])} 

這似乎有點小題大做,但。

3

是,這裏是一個簡單的一行(變化foo到您的用戶名):

USER=foo; curl "https://api.github.com/users/$USER/starred?per_page=1000" | grep -o '[email protected][^"]*' | xargs -L1 git clone 

添加-P參數xargs通過設置並行進程的數量,以增加的速度(例如-P4 = 4個進程) 。

要提高GitHub限制,您可以通過指定API密鑰進行身份驗證。

相關問題