提交 f9979476 编写于 作者: D Dmitriy Zaporozhets

Project can be transfered to namespace and out now

上级 d405c8fc
......@@ -50,8 +50,7 @@ class Admin::GroupsController < AdminController
project_ids = params[:project_ids]
Project.where(id: project_ids).each do |project|
project.namespace_id = @group.id
project.save
project.transfer(@group)
end
redirect_to :back, notice: 'Group was successfully updated.'
......@@ -59,8 +58,7 @@ class Admin::GroupsController < AdminController
def remove_project
@project = Project.find(params[:project_id])
@project.namespace_id = nil
@project.save
@project.transfer(nil)
redirect_to :back, notice: 'Group was successfully updated.'
end
......
......@@ -226,4 +226,18 @@ class Project < ActiveRecord::Base
def code
path
end
def transfer(new_namespace)
Project.transaction do
old_namespace = namespace
self.namespace = new_namespace
old_dir = old_namespace.try(:path) || ''
new_dir = new_namespace.try(:path) || ''
Gitlab::ProjectMover.new(self, old_dir, new_dir).execute
save!
end
end
end
class ProjectObserver < ActiveRecord::Observer
def after_save(project)
# Move repository if namespace changed
if project.namespace_id_changed? and not project.new_record?
old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || ''
new_dir = Namespace.find_by_id(project.namespace_id).try(:path) || ''
Gitlab::ProjectMover.new(project, old_dir, new_dir).execute
end
# Update gitolite
project.update_repository
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册