Skip to content
Snippets Groups Projects
Commit 45b61039 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Update projects in gitolite after namespace moved. Added rake task to cleanup garbage from gitolite

parent 8ef7b9b6
No related branches found
No related tags found
5 merge requests!104094 0 stable,!2553Wiki grammar patch,!2439Documentation: don't setuid the repositories on installation,!2422updated instructions fixed up references of mysql and postgresql,!2415Reconnect redis after unicorn fork
Loading
Loading
@@ -27,10 +27,13 @@ class Namespace < ActiveRecord::Base
 
after_create :ensure_dir_exist
after_update :move_dir
after_commit :update_gitolite, on: :update, if: :require_update_gitolite
after_destroy :rm_dir
 
scope :root, where('type IS NULL')
 
attr_accessor :require_update_gitolite
def self.search query
where("name LIKE :query OR path LIKE :query", query: "%#{query}%")
end
Loading
Loading
@@ -62,10 +65,18 @@ class Namespace < ActiveRecord::Base
 
if system("mv #{old_path} #{new_path}")
send_update_instructions
@require_update_gitolite = true
else
raise "Namespace move error #{old_path} #{new_path}"
end
end
end
 
def update_gitolite
@require_update_gitolite = false
projects.each(&:update_repository)
end
def rm_dir
dir_path = File.join(Gitlab.config.gitolite.repos_path, path)
system("rm -rf #{dir_path}")
Loading
Loading
Loading
Loading
@@ -24,7 +24,7 @@ module NamespacedProject
save!
end
rescue Gitlab::ProjectMover::ProjectMoveError => ex
raise TransferError.new(ex.message)
raise Project::TransferError.new(ex.message)
end
 
def name_with_namespace
Loading
Loading
Loading
Loading
@@ -20,5 +20,38 @@ namespace :gitlab do
end
puts "Done with keys"
end
desc "GITLAB | Cleanup gitolite config"
task :cleanup => :environment do
warn_user_is_not_gitlab
real_repos = Project.all.map(&:path_with_namespace)
real_repos << "gitolite-admin"
real_repos << "@all"
remove_flag = ENV['REMOVE']
puts "Looking for repositories to remove... "
Gitlab::GitoliteConfig.new.apply do |config|
all_repos = []
garbage_repos = []
all_repos = config.conf.repos.keys
garbage_repos = all_repos - real_repos
garbage_repos.each do |repo_name|
if remove_flag
config.conf.rm_repo(repo_name)
print "to remove...".red
end
puts repo_name.red
end
end
unless remove_flag
puts "To cleanup repositories run this command with REMOVE=true".yellow
end
end
end
end
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