diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-10-17 15:42:05 +0000 |
---|---|---|
committer | Winnie Hellmann <winnie@gitlab.com> | 2017-10-18 09:21:11 +0000 |
commit | bb1dd1258a328923669e7cbe8e186012a3c25689 (patch) | |
tree | 9a71861dddecf9b853c4efbb323a611d57ce90c2 | |
parent | 53bfe0891e96841f713dc9bfe19a1232d3f29205 (diff) | |
download | gitlab-ce-bb1dd1258a328923669e7cbe8e186012a3c25689.tar.gz |
Merge branch 'bvl-fix-deleting-forked-projects' into 'master'
Fix errors when deleting a forked project
Closes #39196
See merge request gitlab-org/gitlab-ce!14916
(cherry picked from commit 85d8ab52ca27c5bcd9036aa81a9f0ace9794ee0d)
2c0b6776 Fix errors when deleting a forked project
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | app/services/projects/unlink_fork_service.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/bvl-fix-deleting-forked-projects.yml | 5 | ||||
-rw-r--r-- | spec/services/projects/destroy_service_spec.rb | 17 |
4 files changed, 24 insertions, 2 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 57e91ab3b88..984ef015f4a 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1262,7 +1262,7 @@ class Project < ActiveRecord::Base # self.forked_from_project will be nil before the project is saved, so # we need to go through the relation - original_project = forked_project_link.forked_from_project + original_project = forked_project_link&.forked_from_project return true unless original_project level <= original_project.visibility_level diff --git a/app/services/projects/unlink_fork_service.rb b/app/services/projects/unlink_fork_service.rb index abe414d0c05..2b82e5732e4 100644 --- a/app/services/projects/unlink_fork_service.rb +++ b/app/services/projects/unlink_fork_service.rb @@ -15,8 +15,8 @@ module Projects refresh_forks_count(@project.forked_from_project) - @project.forked_project_link.destroy @project.fork_network_member.destroy + @project.forked_project_link.destroy end def refresh_forks_count(project) diff --git a/changelogs/unreleased/bvl-fix-deleting-forked-projects.yml b/changelogs/unreleased/bvl-fix-deleting-forked-projects.yml new file mode 100644 index 00000000000..95f56facc4b --- /dev/null +++ b/changelogs/unreleased/bvl-fix-deleting-forked-projects.yml @@ -0,0 +1,5 @@ +--- +title: Fix error when updating a forked project with deleted `ForkedProjectLink` +merge_request: 14916 +author: +type: fixed diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb index c90bad46295..0bec2054f50 100644 --- a/spec/services/projects/destroy_service_spec.rb +++ b/spec/services/projects/destroy_service_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe Projects::DestroyService do + include ProjectForksHelper + let!(:user) { create(:user) } let!(:project) { create(:project, :repository, namespace: user.namespace) } let!(:path) { project.repository.path_to_repo } @@ -212,6 +214,21 @@ describe Projects::DestroyService do end end + context 'for a forked project with LFS objects' do + let(:forked_project) { fork_project(project, user) } + + before do + project.lfs_objects << create(:lfs_object) + forked_project.forked_project_link.destroy + forked_project.reload + end + + it 'destroys the fork' do + expect { destroy_project(forked_project, user) } + .not_to raise_error + end + end + context 'as the root of a fork network' do let!(:fork_network) { create(:fork_network, root_project: project) } |