我希望备份我所有的Starred存储库,并且我正在寻找一种简单的方法来实现它。
答案 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])}
但这似乎有点矫枉过正。