Commit 6ba4cb1d2b0bcfaf8459c8936513637acc92da5e
1 parent
260c877c
Exists in
spb-stable
and in
2 other branches
Remove old rake task
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
1 changed file
with
0 additions
and
111 deletions
Show diff stats
lib/tasks/gitlab/enable_namespaces.rake
| ... | ... | @@ -1,111 +0,0 @@ |
| 1 | -namespace :gitlab do | |
| 2 | - desc "GITLAB | Enable usernames and namespaces for user projects" | |
| 3 | - task enable_namespaces: :environment do | |
| 4 | - warn_user_is_not_gitlab | |
| 5 | - | |
| 6 | - migrate_user_namespaces | |
| 7 | - migrate_groups | |
| 8 | - migrate_projects | |
| 9 | - end | |
| 10 | - | |
| 11 | - def migrate_user_namespaces | |
| 12 | - puts "\nGenerate usernames for users without one: ".blue | |
| 13 | - User.find_each(batch_size: 500) do |user| | |
| 14 | - if user.namespace | |
| 15 | - print '-'.cyan | |
| 16 | - next | |
| 17 | - end | |
| 18 | - | |
| 19 | - username = if user.username.present? | |
| 20 | - # if user already has username filled | |
| 21 | - user.username | |
| 22 | - else | |
| 23 | - build_username(user) | |
| 24 | - end | |
| 25 | - | |
| 26 | - begin | |
| 27 | - User.transaction do | |
| 28 | - user.update_attributes!(username: username) | |
| 29 | - print '.'.green | |
| 30 | - end | |
| 31 | - rescue | |
| 32 | - print 'F'.red | |
| 33 | - end | |
| 34 | - end | |
| 35 | - puts "\nDone" | |
| 36 | - end | |
| 37 | - | |
| 38 | - def build_username(user) | |
| 39 | - username = nil | |
| 40 | - | |
| 41 | - # generate username | |
| 42 | - username = user.email.match(/^[^@]*/)[0] | |
| 43 | - username.gsub!("+", ".") | |
| 44 | - | |
| 45 | - # return username if no matches | |
| 46 | - return username unless User.find_by(username: username) | |
| 47 | - | |
| 48 | - # look for same username | |
| 49 | - (1..10).each do |i| | |
| 50 | - suffixed_username = "#{username}#{i}" | |
| 51 | - | |
| 52 | - return suffixed_username unless User.find_by(username: suffixed_username) | |
| 53 | - end | |
| 54 | - end | |
| 55 | - | |
| 56 | - def migrate_groups | |
| 57 | - puts "\nCreate directories for groups: ".blue | |
| 58 | - | |
| 59 | - Group.find_each(batch_size: 500) do |group| | |
| 60 | - begin | |
| 61 | - if group.dir_exists? | |
| 62 | - print '-'.cyan | |
| 63 | - else | |
| 64 | - if group.ensure_dir_exist | |
| 65 | - print '.'.green | |
| 66 | - else | |
| 67 | - print 'F'.red | |
| 68 | - end | |
| 69 | - end | |
| 70 | - rescue | |
| 71 | - print 'F'.red | |
| 72 | - end | |
| 73 | - end | |
| 74 | - puts "\nDone" | |
| 75 | - end | |
| 76 | - | |
| 77 | - def migrate_projects | |
| 78 | - git_path = Gitlab.config.gitlab_shell.repos_path | |
| 79 | - puts "\nMove projects in groups into respective directories ... ".blue | |
| 80 | - Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project| | |
| 81 | - next unless project.group | |
| 82 | - | |
| 83 | - group = project.group | |
| 84 | - | |
| 85 | - print "#{project.name_with_namespace.yellow} ... " | |
| 86 | - | |
| 87 | - new_path = File.join(git_path, project.path_with_namespace + '.git') | |
| 88 | - | |
| 89 | - if File.exists?(new_path) | |
| 90 | - puts "already at #{new_path}".green | |
| 91 | - next | |
| 92 | - end | |
| 93 | - | |
| 94 | - old_path = File.join(git_path, project.path + '.git') | |
| 95 | - | |
| 96 | - unless File.exists?(old_path) | |
| 97 | - puts "couldn't find it at #{old_path}".red | |
| 98 | - next | |
| 99 | - end | |
| 100 | - | |
| 101 | - begin | |
| 102 | - project.transfer(group.path) | |
| 103 | - puts "moved to #{new_path}".green | |
| 104 | - rescue | |
| 105 | - puts "failed moving to #{new_path}".red | |
| 106 | - end | |
| 107 | - end | |
| 108 | - | |
| 109 | - puts "\nDone" | |
| 110 | - end | |
| 111 | -end |