35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :gitlab do
|
|
namespace :cleanup do
|
|
desc "GitLab | Cleanup | Delete moved repositories"
|
|
task moved: :gitlab_environment do
|
|
warn_user_is_not_gitlab
|
|
remove_flag = ENV['REMOVE']
|
|
|
|
Gitlab.config.repositories.storages.each do |name, repository_storage|
|
|
repo_root = repository_storage.legacy_disk_path.chomp('/')
|
|
# Look for global repos (legacy, depth 1) and normal repos (depth 2)
|
|
IO.popen(%W(find #{repo_root} -mindepth 1 -maxdepth 2 -name *+moved*.git)) do |find|
|
|
find.each_line do |path|
|
|
path.chomp!
|
|
|
|
if remove_flag
|
|
if FileUtils.rm_rf(path)
|
|
puts "Removed...#{path}".color(:green)
|
|
else
|
|
puts "Cannot remove #{path}".color(:red)
|
|
end
|
|
else
|
|
puts "Can be removed: #{path}".color(:green)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
unless remove_flag
|
|
puts "To cleanup these repositories run this command with REMOVE=true".color(:yellow)
|
|
end
|
|
end
|
|
end
|
|
end
|