Commit d405c8fc605256c1273cca1e30dfa1196459d625
1 parent
4023d9f8
Exists in
master
and in
4 other branches
Create namespace on username init. Raise exception if project cannot be moved
Showing
4 changed files
with
21 additions
and
8 deletions
Show diff stats
app/observers/project_observer.rb
1 | class ProjectObserver < ActiveRecord::Observer | 1 | class ProjectObserver < ActiveRecord::Observer |
2 | def after_save(project) | 2 | def after_save(project) |
3 | - project.update_repository | ||
4 | - | ||
5 | # Move repository if namespace changed | 3 | # Move repository if namespace changed |
6 | if project.namespace_id_changed? and not project.new_record? | 4 | if project.namespace_id_changed? and not project.new_record? |
7 | old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || '' | 5 | old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || '' |
@@ -9,6 +7,9 @@ class ProjectObserver < ActiveRecord::Observer | @@ -9,6 +7,9 @@ class ProjectObserver < ActiveRecord::Observer | ||
9 | 7 | ||
10 | Gitlab::ProjectMover.new(project, old_dir, new_dir).execute | 8 | Gitlab::ProjectMover.new(project, old_dir, new_dir).execute |
11 | end | 9 | end |
10 | + | ||
11 | + # Update gitolite | ||
12 | + project.update_repository | ||
12 | end | 13 | end |
13 | 14 | ||
14 | def after_destroy(project) | 15 | def after_destroy(project) |
app/observers/user_observer.rb
@@ -12,8 +12,12 @@ class UserObserver < ActiveRecord::Observer | @@ -12,8 +12,12 @@ class UserObserver < ActiveRecord::Observer | ||
12 | end | 12 | end |
13 | 13 | ||
14 | def after_save user | 14 | def after_save user |
15 | - if user.username_changed? and user.namespace | ||
16 | - user.namespace.update_attributes(path: user.username) | 15 | + if user.username_changed? |
16 | + if user.namespace | ||
17 | + user.namespace.update_attributes(path: user.username) | ||
18 | + else | ||
19 | + user.create_namespace!(path: user.username, name: user.name) | ||
20 | + end | ||
17 | end | 21 | end |
18 | end | 22 | end |
19 | 23 |
lib/gitlab/project_mover.rb
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | # Used for moving project repositories from one subdir to another | 3 | # Used for moving project repositories from one subdir to another |
4 | module Gitlab | 4 | module Gitlab |
5 | class ProjectMover | 5 | class ProjectMover |
6 | + class ProjectMoveError < StandardError; end | ||
7 | + | ||
6 | attr_reader :project, :old_dir, :new_dir | 8 | attr_reader :project, :old_dir, :new_dir |
7 | 9 | ||
8 | def initialize(project, old_dir, new_dir) | 10 | def initialize(project, old_dir, new_dir) |
@@ -23,7 +25,9 @@ module Gitlab | @@ -23,7 +25,9 @@ module Gitlab | ||
23 | log_info "Project #{project.name} was moved from #{old_path} to #{new_path}" | 25 | log_info "Project #{project.name} was moved from #{old_path} to #{new_path}" |
24 | true | 26 | true |
25 | else | 27 | else |
26 | - log_info "Error! Project #{project.name} cannot be moved from #{old_path} to #{new_path}" | 28 | + message = "Project #{project.name} cannot be moved from #{old_path} to #{new_path}" |
29 | + log_info "Error! #{message}" | ||
30 | + raise ProjectMoveError.new(message) | ||
27 | false | 31 | false |
28 | end | 32 | end |
29 | end | 33 | end |
lib/tasks/gitlab/activate_namespaces.rake
@@ -2,11 +2,15 @@ namespace :gitlab do | @@ -2,11 +2,15 @@ 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 | User.find_each(batch_size: 500) do |user| | 4 | User.find_each(batch_size: 500) do |user| |
5 | + next if user.namespace | ||
6 | + | ||
5 | User.transaction do | 7 | User.transaction do |
6 | username = user.email.match(/^[^@]*/)[0] | 8 | username = user.email.match(/^[^@]*/)[0] |
7 | - user.update_attributes!(username: username) | ||
8 | - user.create_namespace!(code: username, name: user.name) | ||
9 | - print '.'.green | 9 | + if user.update_attributes!(username: username) |
10 | + print '.'.green | ||
11 | + else | ||
12 | + print 'F'.red | ||
13 | + end | ||
10 | end | 14 | end |
11 | end | 15 | end |
12 | end | 16 | end |