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 |