Skip to content
Snippets Groups Projects
Commit 52d7813f authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab)
Browse files

Improve repo cleanup task

Clean up more than just global (legacy) repos. Also, instead of
deleting, just rename.
parent 3315e89d
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -46,43 +46,20 @@ namespace :gitlab do
desc "GitLab | Cleanup | Clean repositories"
task repos: :environment do
warn_user_is_not_gitlab
remove_flag = ENV['REMOVE']
git_base_path = Gitlab.config.gitlab_shell.repos_path
all_dirs = Dir.glob(git_base_path + '/*')
global_projects = Project.in_namespace(nil).pluck(:path)
puts git_base_path.yellow
puts "Looking for global repos to remove... "
# skip non git repo
all_dirs.select! do |dir|
dir =~ /.git$/
end
# skip existing repos
all_dirs.reject! do |dir|
repo_name = File.basename dir
path = repo_name.gsub(/\.git$/, "")
global_projects.include?(path)
end
 
all_dirs.each do |dir_path|
if remove_flag
if FileUtils.rm_rf dir_path
puts "Removed...#{dir_path}".red
else
puts "Cannot remove #{dir_path}".red
end
else
puts "Can be removed: #{dir_path}".red
move_suffix = "+orphaned+#{Time.now.to_i}"
repo_root = Gitlab.config.gitlab_shell.repos_path
# Look for global repos (legacy, depth 1) and normal repos (depth 2)
IO.popen(%W(find #{repo_root} -mindepth 1 -maxdepth 2 -name *.git)) do |find|
find.each_line do |path|
path.chomp!
repo_with_namespace = path.sub(repo_root + '/', '').chomp('.git').chomp('.wiki')
next if Project.find_with_namespace(repo_with_namespace)
new_path = path + move_suffix
puts path.inspect + ' -> ' + new_path.inspect
File.rename(path, new_path)
end
end
unless remove_flag
puts "To cleanup this directories run this command with REMOVE=true".yellow
end
end
 
desc "GitLab | Cleanup | Block users that have been removed in LDAP"
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment