Create namespace on username init. Raise exception if project cannot be moved
This commit is contained in:
parent
4023d9f852
commit
d405c8fc60
|
@ -1,7 +1,5 @@
|
||||||
class ProjectObserver < ActiveRecord::Observer
|
class ProjectObserver < ActiveRecord::Observer
|
||||||
def after_save(project)
|
def after_save(project)
|
||||||
project.update_repository
|
|
||||||
|
|
||||||
# Move repository if namespace changed
|
# Move repository if namespace changed
|
||||||
if project.namespace_id_changed? and not project.new_record?
|
if project.namespace_id_changed? and not project.new_record?
|
||||||
old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || ''
|
old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || ''
|
||||||
|
@ -9,6 +7,9 @@ class ProjectObserver < ActiveRecord::Observer
|
||||||
|
|
||||||
Gitlab::ProjectMover.new(project, old_dir, new_dir).execute
|
Gitlab::ProjectMover.new(project, old_dir, new_dir).execute
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Update gitolite
|
||||||
|
project.update_repository
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_destroy(project)
|
def after_destroy(project)
|
||||||
|
|
|
@ -12,8 +12,12 @@ class UserObserver < ActiveRecord::Observer
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_save user
|
def after_save user
|
||||||
if user.username_changed? and user.namespace
|
if user.username_changed?
|
||||||
|
if user.namespace
|
||||||
user.namespace.update_attributes(path: user.username)
|
user.namespace.update_attributes(path: user.username)
|
||||||
|
else
|
||||||
|
user.create_namespace!(path: user.username, name: user.name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# Used for moving project repositories from one subdir to another
|
# Used for moving project repositories from one subdir to another
|
||||||
module Gitlab
|
module Gitlab
|
||||||
class ProjectMover
|
class ProjectMover
|
||||||
|
class ProjectMoveError < StandardError; end
|
||||||
|
|
||||||
attr_reader :project, :old_dir, :new_dir
|
attr_reader :project, :old_dir, :new_dir
|
||||||
|
|
||||||
def initialize(project, old_dir, new_dir)
|
def initialize(project, old_dir, new_dir)
|
||||||
|
@ -23,7 +25,9 @@ module Gitlab
|
||||||
log_info "Project #{project.name} was moved from #{old_path} to #{new_path}"
|
log_info "Project #{project.name} was moved from #{old_path} to #{new_path}"
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
log_info "Error! Project #{project.name} cannot be moved from #{old_path} to #{new_path}"
|
message = "Project #{project.name} cannot be moved from #{old_path} to #{new_path}"
|
||||||
|
log_info "Error! #{message}"
|
||||||
|
raise ProjectMoveError.new(message)
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,11 +2,15 @@ namespace :gitlab do
|
||||||
desc "GITLAB | Enable usernames and namespaces for user projects"
|
desc "GITLAB | Enable usernames and namespaces for user projects"
|
||||||
task activate_namespaces: :environment do
|
task activate_namespaces: :environment do
|
||||||
User.find_each(batch_size: 500) do |user|
|
User.find_each(batch_size: 500) do |user|
|
||||||
|
next if user.namespace
|
||||||
|
|
||||||
User.transaction do
|
User.transaction do
|
||||||
username = user.email.match(/^[^@]*/)[0]
|
username = user.email.match(/^[^@]*/)[0]
|
||||||
user.update_attributes!(username: username)
|
if user.update_attributes!(username: username)
|
||||||
user.create_namespace!(code: username, name: user.name)
|
|
||||||
print '.'.green
|
print '.'.green
|
||||||
|
else
|
||||||
|
print 'F'.red
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue