summaryrefslogtreecommitdiff
path: root/lib/tasks
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <zegerjan@localhost.localdomain>2015-10-01 13:34:41 +0200
committerZeger-Jan van de Weg <mail@zjvandeweg.nl>2015-10-14 19:11:09 +0200
commit8db063b579322238af43f6d04b5968d9c6ea935d (patch)
tree7dd2134d7de7e24d753fa21b97a1a83ee382e737 /lib/tasks
parent54e6c0045bb13c05cc5478cbdf47d3246bd9fe2b (diff)
downloadgitlab-ce-8db063b579322238af43f6d04b5968d9c6ea935d.tar.gz
Scalable way of requesting all repos
Diffstat (limited to 'lib/tasks')
-rw-r--r--lib/tasks/gitlab/git.rake19
-rw-r--r--lib/tasks/gitlab/task_helpers.rake6
2 files changed, 16 insertions, 9 deletions
diff --git a/lib/tasks/gitlab/git.rake b/lib/tasks/gitlab/git.rake
index 4fbf5a9393c..65ee430d550 100644
--- a/lib/tasks/gitlab/git.rake
+++ b/lib/tasks/gitlab/git.rake
@@ -3,7 +3,7 @@ namespace :gitlab do
desc "GitLab | Git | Repack"
task repack: :environment do
- failures = perform_git_cmd('git repack -a --quiet', 'Git repack')
+ failures = perform_git_cmd(%W(git repack -a --quiet), "Repacking repo")
if failures.empty?
puts "Done".green
else
@@ -11,9 +11,9 @@ namespace :gitlab do
end
end
- desc "GitLab | Git | Run gits garbage collection on all repo's"
+ desc "GitLab | Git | Run garbage collection on all repos"
task gc: :environment do
- failures = perform_git_cmd('git gc --auto --quiet', "Garbage Collection")
+ failures = perform_git_cmd(%W(git gc --auto --quiet), "Garbage Collecting")
if failures.empty?
puts "Done".green
else
@@ -21,9 +21,9 @@ namespace :gitlab do
end
end
- desc "GitLab | Git | Git prune all repo's"
+ desc "GitLab | Git | Prune all repos"
task prune: :environment do
- failures = perform_git_cmd('git prune', 'Git Prune')
+ failures = perform_git_cmd(%W(git prune), "Git Prune")
if failures.empty?
puts "Done".green
else
@@ -35,9 +35,12 @@ namespace :gitlab do
puts "Starting #{message} on all repositories"
failures = []
- all_repos.each do |r|
- puts "Performing #{message} at #{r}"
- failures << r unless system(*%w(#{cmd}), chdir: r)
+ all_repos do |repo|
+ if system(*cmd, chdir: repo)
+ puts "Performed #{message} at #{repo}"
+ else
+ failures << repo
+ end
end
failures
diff --git a/lib/tasks/gitlab/task_helpers.rake b/lib/tasks/gitlab/task_helpers.rake
index 77c41bf61cb..e35fd47c5c4 100644
--- a/lib/tasks/gitlab/task_helpers.rake
+++ b/lib/tasks/gitlab/task_helpers.rake
@@ -130,6 +130,10 @@ namespace :gitlab do
end
def all_repos
- Dir.glob(File.join(Gitlab.config.gitlab_shell.repos_path, '**/*\.git'))
+ IO.popen(%W(find #{Gitlab.config.gitlab_shell.repos_path} -mindepth 2 -maxdepth 2 -type d -name *.git)) do |find|
+ find.each_line do |path|
+ yield path.chomp
+ end
+ end
end
end