Commit 04b51a2b892c9c675f638239a3fbfec39cdc4729

Authored by Dmitriy Zaporozhets
1 parent fbe03c50

Improve activate_namespace task to build missing dirs and moving repos correctly

lib/gitlab/backend/gitolite.rb
@@ -38,6 +38,12 @@ module Gitlab @@ -38,6 +38,12 @@ module Gitlab
38 config.admin_all_repo! 38 config.admin_all_repo!
39 end 39 end
40 40
  41 + def update_repositories projects
  42 + config.apply do |config|
  43 + config.update_projects(projects)
  44 + end
  45 + end
  46 +
41 alias_method :create_repository, :update_repository 47 alias_method :create_repository, :update_repository
42 end 48 end
43 end 49 end
lib/tasks/gitlab/activate_namespaces.rake
1 namespace :gitlab do 1 namespace :gitlab do
2 desc "GITLAB | Enable usernames and namespaces for user projects" 2 desc "GITLAB | Enable usernames and namespaces for user projects"
3 task activate_namespaces: :environment do 3 task activate_namespaces: :environment do
  4 + print "\nUsernames for users:".yellow
  5 +
4 User.find_each(batch_size: 500) do |user| 6 User.find_each(batch_size: 500) do |user|
5 next if user.namespace 7 next if user.namespace
6 8
@@ -14,6 +16,8 @@ namespace :gitlab do @@ -14,6 +16,8 @@ namespace :gitlab do
14 end 16 end
15 end 17 end
16 18
  19 + print "\n\nDirs for groups:".yellow
  20 +
17 Group.find_each(batch_size: 500) do |group| 21 Group.find_each(batch_size: 500) do |group|
18 if group.ensure_dir_exist 22 if group.ensure_dir_exist
19 print '.'.green 23 print '.'.green
@@ -22,23 +26,43 @@ namespace :gitlab do @@ -22,23 +26,43 @@ namespace :gitlab do
22 end 26 end
23 end 27 end
24 28
  29 + print "\n\nMove projects from groups under groups dirs:".yellow
25 git_path = Gitlab.config.git_base_path 30 git_path = Gitlab.config.git_base_path
26 31
27 Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project| 32 Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project|
28 next unless project.group 33 next unless project.group
  34 + next if project.empty_repo?
29 35
30 group = project.group 36 group = project.group
31 37
32 - next if File.exists?(File.join(git_path, project.path_with_namespace)) 38 + puts "\n"
  39 + print " * #{project.name}: "
  40 +
  41 + new_path = File.join(git_path, project.path_with_namespace + '.git')
  42 +
  43 + if File.exists?(new_path)
  44 + print "ok. already at #{new_path}".cyan
  45 + next
  46 + end
  47 +
  48 + old_path = File.join(git_path, project.path + '.git')
33 49
34 - next unless File.exists?(File.join(git_path, project.path)) 50 + unless File.exists?(old_path)
  51 + print "missing. not found at #{old_path}".red
  52 + next
  53 + end
35 54
36 begin 55 begin
37 Gitlab::ProjectMover.new(project, '', group.path).execute 56 Gitlab::ProjectMover.new(project, '', group.path).execute
38 - print '.'.green 57 + print "ok. Moved to #{new_path}".green
39 rescue 58 rescue
40 - print 'F'.red 59 + print "Failed moving to #{new_path}".red
41 end 60 end
42 end 61 end
  62 +
  63 + print "\n\nRebuild gitolite:".yellow
  64 + gitolite = Gitlab::Gitolite.new
  65 + gitolite.update_repositories(Project.where('namespace_id IS NOT NULL'))
  66 + puts "\n"
43 end 67 end
44 end 68 end