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 38 config.admin_all_repo!
39 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 47 alias_method :create_repository, :update_repository
42 48 end
43 49 end
... ...
lib/tasks/gitlab/activate_namespaces.rake
1 1 namespace :gitlab do
2 2 desc "GITLAB | Enable usernames and namespaces for user projects"
3 3 task activate_namespaces: :environment do
  4 + print "\nUsernames for users:".yellow
  5 +
4 6 User.find_each(batch_size: 500) do |user|
5 7 next if user.namespace
6 8  
... ... @@ -14,6 +16,8 @@ namespace :gitlab do
14 16 end
15 17 end
16 18  
  19 + print "\n\nDirs for groups:".yellow
  20 +
17 21 Group.find_each(batch_size: 500) do |group|
18 22 if group.ensure_dir_exist
19 23 print '.'.green
... ... @@ -22,23 +26,43 @@ namespace :gitlab do
22 26 end
23 27 end
24 28  
  29 + print "\n\nMove projects from groups under groups dirs:".yellow
25 30 git_path = Gitlab.config.git_base_path
26 31  
27 32 Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project|
28 33 next unless project.group
  34 + next if project.empty_repo?
29 35  
30 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 55 begin
37 56 Gitlab::ProjectMover.new(project, '', group.path).execute
38   - print '.'.green
  57 + print "ok. Moved to #{new_path}".green
39 58 rescue
40   - print 'F'.red
  59 + print "Failed moving to #{new_path}".red
41 60 end
42 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 67 end
44 68 end
... ...