有没有一种简单的方法可以从GitHub克隆所有Starred回购?

时间:2014-04-27 21:54:10

标签: github

我希望备份我所有的Starred存储库,并且我正在寻找一种简单的方法来实现它。

3 个答案:

答案 0 :(得分:8)

这应该这样做。请注意,你需要 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 :(得分:4)

是的,这是一个简单的单行(将foo更改为您的用户名):

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

-P添加xargs参数,以通过设置并行进程数(例如-P4 = 4个进程)来提高速度。

要提高GitHub限制,您可以通过指定API密钥进行身份验证。

答案 2 :(得分:2)

如果你对ruby没有任何问题并且可以安装一些宝石,你可以试一试。

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])}

但这似乎有点矫枉过正。