Improve activate_namespace task to build missing dirs and moving repos correctly
This commit is contained in:
parent
fbe03c506f
commit
04b51a2b89
|
@ -38,6 +38,12 @@ module Gitlab
|
|||
config.admin_all_repo!
|
||||
end
|
||||
|
||||
def update_repositories projects
|
||||
config.apply do |config|
|
||||
config.update_projects(projects)
|
||||
end
|
||||
end
|
||||
|
||||
alias_method :create_repository, :update_repository
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
namespace :gitlab do
|
||||
desc "GITLAB | Enable usernames and namespaces for user projects"
|
||||
task activate_namespaces: :environment do
|
||||
print "\nUsernames for users:".yellow
|
||||
|
||||
User.find_each(batch_size: 500) do |user|
|
||||
next if user.namespace
|
||||
|
||||
|
@ -14,6 +16,8 @@ namespace :gitlab do
|
|||
end
|
||||
end
|
||||
|
||||
print "\n\nDirs for groups:".yellow
|
||||
|
||||
Group.find_each(batch_size: 500) do |group|
|
||||
if group.ensure_dir_exist
|
||||
print '.'.green
|
||||
|
@ -22,23 +26,43 @@ namespace :gitlab do
|
|||
end
|
||||
end
|
||||
|
||||
print "\n\nMove projects from groups under groups dirs:".yellow
|
||||
git_path = Gitlab.config.git_base_path
|
||||
|
||||
Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project|
|
||||
next unless project.group
|
||||
next if project.empty_repo?
|
||||
|
||||
group = project.group
|
||||
|
||||
next if File.exists?(File.join(git_path, project.path_with_namespace))
|
||||
puts "\n"
|
||||
print " * #{project.name}: "
|
||||
|
||||
next unless File.exists?(File.join(git_path, project.path))
|
||||
new_path = File.join(git_path, project.path_with_namespace + '.git')
|
||||
|
||||
if File.exists?(new_path)
|
||||
print "ok. already at #{new_path}".cyan
|
||||
next
|
||||
end
|
||||
|
||||
old_path = File.join(git_path, project.path + '.git')
|
||||
|
||||
unless File.exists?(old_path)
|
||||
print "missing. not found at #{old_path}".red
|
||||
next
|
||||
end
|
||||
|
||||
begin
|
||||
Gitlab::ProjectMover.new(project, '', group.path).execute
|
||||
print '.'.green
|
||||
print "ok. Moved to #{new_path}".green
|
||||
rescue
|
||||
print 'F'.red
|
||||
print "Failed moving to #{new_path}".red
|
||||
end
|
||||
end
|
||||
|
||||
print "\n\nRebuild gitolite:".yellow
|
||||
gitolite = Gitlab::Gitolite.new
|
||||
gitolite.update_repositories(Project.where('namespace_id IS NOT NULL'))
|
||||
puts "\n"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue