Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/tasks/mirrorrepos.rake23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/tasks/mirrorrepos.rake b/lib/tasks/mirrorrepos.rake
index b71a255..5e4ab06 100644
--- a/lib/tasks/mirrorrepos.rake
+++ b/lib/tasks/mirrorrepos.rake
@@ -23,27 +23,34 @@ namespace :mirror do
task :symlinkedrepos => :environment do
default_mirror_base_path = "#{GitoriousConfig['repository_base_path']}/../mirrored-public-repos"
mirror_base = GitoriousConfig["symlinked_mirror_repo_base"] || default_mirror_base_path
+ mirror_base_new = "#{mirror_base}.new"
+
owner = GitoriousConfig["gitorious_user"]
# create symlink dir if not there already
- puts `mkdir -p #{mirror_base}`
-
- # remove any current symlinks
- puts `rm -rf #{mirror_base}/*`
+ `mkdir -p #{mirror_base_new}`
+ raise "Failed to create #{mirror_base_new}" unless $?.success?
# rebuild symlinks for all standard repos (omit private repos, wiki repos etc)
repo_data = Repository.regular.each do |r|
if !r.private?
actual_path = "#{GitoriousConfig["repository_base_path"]}/#{r.real_gitdir}"
repo_parent_dir = Pathname.new(r.url_path).dirname
- project_dir = "#{mirror_base}/#{repo_parent_dir}"
- puts `mkdir -p #{project_dir}`
+ project_dir = "#{mirror_base_new}/#{repo_parent_dir}"
+ `mkdir -p #{project_dir}`
+ raise "Failed to create #{project_dir}/*" unless $?.success?
symlink_path = "#{project_dir}/#{r.name}"
- puts `ln -fs #{actual_path} #{symlink_path}`
+ `ln -fs #{actual_path} #{symlink_path}`
+ raise "Failed to link #{actual_path} to #{symlink_path}" unless $?.success?
end
end
# make sure gitorious user owns all repo symlinks
- puts `chown -R #{owner}:#{owner} #{mirror_base}`
+ `chown -R #{owner}:#{owner} #{mirror_base_new}`
+ raise "Failed to chown #{mirror_base_new}" unless $?.success?
+
+ # remove any current symlinks
+ `rm -rf #{mirror_base}.old && mv #{mirror_base} #{mirror_base}.old && mv #{mirror_base_new} #{mirror_base} &&rm -rf #{mirror_base}.old`
+ raise "Failed to rename #{mirror_base}" unless $?.success?
end
end