lib/tasks/git.rake
namespace :git do
require 'fileutils'
IGNORE_REPOS = [
"origin",
"upstream",
]
TEAM_REPOS = {
'donthorp' => 'git@github.com:donthorp/kandan.git',
'gabceb' => 'git://github.com/gabceb/kandan-1.git',
'fusion94' => 'git://github.com/fusion94/kandan.git',
'SpencerCooley' => 'git://github.com/SpencerCooley/kandan.git',
'jrgifford' => 'git://github.com/jrgifford/kandan.git',
'mjtko' => 'git://github.com/mjtko/kandan.git',
}
def get_remotes
remotes = []
o = `git remote`.split("\n")
o.each() do |r|
next if IGNORE_REPOS.include?(r)
remotes << r
end
return remotes
end
def get_user
`git config --get github.user`.chop()
end
def get_team_repos
repos = TEAM_REPOS
repos.delete(get_user())
return repos
end
desc "Add team upstream repos"
task :add_team_repos do
remotes = get_remotes()
get_team_repos().each() do |k,v|
if remotes.include?(k)
puts "Skipping remote for #{k}. Already added."
next
end
sh %{git remote add #{k} #{v}}
end
end
desc "Prune removed branches from remotes"
task :prune_team_repos do
repos = get_team_repos()
repos.each() do |k,v|
sh %{git remote prune #{k}}
end
end
end