Create a gist now

Instantly share code, notes, and snippets.

Script to clone all repositories of specified organization
#!/usr/bin/env ruby
# gem i github_api
## Setting -> Applications -> Personal Access Tokens -> Generate new token
# Selected scopes:
# * repo
# * public_repo
# * repo:status
# * read:org
## Generate token -> copy token and paste to "oauth_token"
oauth_token = "...."
org_name = 'yourcompany'
exists = Dir.glob('*')
require 'github_api'
github = Github.new(basic_auth: oauth_token)
pagenum = 1
list = []
while page = github.repos.list(org: org_name, page: pagenum, per_page: 100)
break if page.size < 1
list += page.to_a
pagenum += 1
end
dup = list.select{|repo| exists.include?(repo["name"]) }
puts "skipping #{dup.size} repositories which already exists.\n"
list = list.select{|repo| ! exists.include?(repo["name"]) }
puts "cloning #{list.size} repositories.\n"
list.each do |repo|
system "git clone #{repo["ssh_url"]}"
sleep 5
end
@nahi
nahi commented Mar 4, 2015

Why sleep 5?

@tagomoris
Owner

It's a magic number. I know how engineers in github.com thinks :)

@danielnorberg

lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment