Commit f997947664a7c959b5e606614f56dc52443bd0dd
1 parent
d405c8fc
Exists in
master
and in
4 other branches
Project can be transfered to namespace and out now
Showing
3 changed files
with
16 additions
and
13 deletions
Show diff stats
app/controllers/admin/groups_controller.rb
... | ... | @@ -50,8 +50,7 @@ class Admin::GroupsController < AdminController |
50 | 50 | project_ids = params[:project_ids] |
51 | 51 | |
52 | 52 | Project.where(id: project_ids).each do |project| |
53 | - project.namespace_id = @group.id | |
54 | - project.save | |
53 | + project.transfer(@group) | |
55 | 54 | end |
56 | 55 | |
57 | 56 | redirect_to :back, notice: 'Group was successfully updated.' |
... | ... | @@ -59,8 +58,7 @@ class Admin::GroupsController < AdminController |
59 | 58 | |
60 | 59 | def remove_project |
61 | 60 | @project = Project.find(params[:project_id]) |
62 | - @project.namespace_id = nil | |
63 | - @project.save | |
61 | + @project.transfer(nil) | |
64 | 62 | |
65 | 63 | redirect_to :back, notice: 'Group was successfully updated.' |
66 | 64 | end | ... | ... |
app/models/project.rb
... | ... | @@ -226,4 +226,18 @@ class Project < ActiveRecord::Base |
226 | 226 | def code |
227 | 227 | path |
228 | 228 | end |
229 | + | |
230 | + def transfer(new_namespace) | |
231 | + Project.transaction do | |
232 | + old_namespace = namespace | |
233 | + self.namespace = new_namespace | |
234 | + | |
235 | + old_dir = old_namespace.try(:path) || '' | |
236 | + new_dir = new_namespace.try(:path) || '' | |
237 | + | |
238 | + Gitlab::ProjectMover.new(self, old_dir, new_dir).execute | |
239 | + | |
240 | + save! | |
241 | + end | |
242 | + end | |
229 | 243 | end | ... | ... |
app/observers/project_observer.rb
1 | 1 | class ProjectObserver < ActiveRecord::Observer |
2 | 2 | def after_save(project) |
3 | - # Move repository if namespace changed | |
4 | - if project.namespace_id_changed? and not project.new_record? | |
5 | - old_dir = Namespace.find_by_id(project.namespace_id_was).try(:path) || '' | |
6 | - new_dir = Namespace.find_by_id(project.namespace_id).try(:path) || '' | |
7 | - | |
8 | - Gitlab::ProjectMover.new(project, old_dir, new_dir).execute | |
9 | - end | |
10 | - | |
11 | - # Update gitolite | |
12 | 3 | project.update_repository |
13 | 4 | end |
14 | 5 | ... | ... |