Skip to content
Snippets Groups Projects
Commit a87fccc0 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 dea86281
No related branches found
No related tags found
No related merge requests found
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
@@ -23,5 +23,38 @@ namespace :gitlab do
puts "... #{"done".green}"
end
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