提交 04b51a2b 编写于 作者: D Dmitriy Zaporozhets

Improve activate_namespace task to build missing dirs and moving repos correctly

上级 fbe03c50
...@@ -38,6 +38,12 @@ module Gitlab ...@@ -38,6 +38,12 @@ module Gitlab
config.admin_all_repo! config.admin_all_repo!
end end
def update_repositories projects
config.apply do |config|
config.update_projects(projects)
end
end
alias_method :create_repository, :update_repository alias_method :create_repository, :update_repository
end end
end end
namespace :gitlab do namespace :gitlab do
desc "GITLAB | Enable usernames and namespaces for user projects" desc "GITLAB | Enable usernames and namespaces for user projects"
task activate_namespaces: :environment do task activate_namespaces: :environment do
print "\nUsernames for users:".yellow
User.find_each(batch_size: 500) do |user| User.find_each(batch_size: 500) do |user|
next if user.namespace next if user.namespace
...@@ -14,6 +16,8 @@ namespace :gitlab do ...@@ -14,6 +16,8 @@ namespace :gitlab do
end end
end end
print "\n\nDirs for groups:".yellow
Group.find_each(batch_size: 500) do |group| Group.find_each(batch_size: 500) do |group|
if group.ensure_dir_exist if group.ensure_dir_exist
print '.'.green print '.'.green
...@@ -22,23 +26,43 @@ namespace :gitlab do ...@@ -22,23 +26,43 @@ namespace :gitlab do
end end
end end
print "\n\nMove projects from groups under groups dirs:".yellow
git_path = Gitlab.config.git_base_path git_path = Gitlab.config.git_base_path
Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project| Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project|
next unless project.group next unless project.group
next if project.empty_repo?
group = project.group group = project.group
next if File.exists?(File.join(git_path, project.path_with_namespace)) puts "\n"
print " * #{project.name}: "
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')
next unless File.exists?(File.join(git_path, project.path)) unless File.exists?(old_path)
print "missing. not found at #{old_path}".red
next
end
begin begin
Gitlab::ProjectMover.new(project, '', group.path).execute Gitlab::ProjectMover.new(project, '', group.path).execute
print '.'.green print "ok. Moved to #{new_path}".green
rescue rescue
print 'F'.red print "Failed moving to #{new_path}".red
end end
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
end end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册