diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-11-03 18:33:53 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-11-03 18:33:53 +0300 |
commit | e19f54ca41f094920bccdecc6f2b82b8dda2f4e7 (patch) | |
tree | 7cbf497b8f158dfe03ae68d762abfb07a98880c3 /app/services | |
parent | 9f07033839e2c5fdb6ab429cbafab56d6f46b007 (diff) | |
parent | 0f1d6402b9ebf25d5ddd09effe6dce1902ae476b (diff) |
Merge branch 'bvl-unlink-fixes' into 'master'
This fixes some bugs related to forked projects of which the source was deleted.
Closes #39667
See merge request gitlab-org/gitlab-ce!15150
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/projects/unlink_fork_service.rb | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/app/services/projects/unlink_fork_service.rb b/app/services/projects/unlink_fork_service.rb index 2b82e5732e4..c499f384426 100644 --- a/app/services/projects/unlink_fork_service.rb +++ b/app/services/projects/unlink_fork_service.rb @@ -3,18 +3,24 @@ module Projects def execute return unless @project.forked? - @project.forked_from_project.lfs_objects.find_each do |lfs_object| - lfs_object.projects << @project + if fork_source = @project.fork_source + fork_source.lfs_objects.find_each do |lfs_object| + lfs_object.projects << @project + end + + refresh_forks_count(fork_source) end - merge_requests = @project.forked_from_project.merge_requests.opened.from_project(@project) + merge_requests = @project.fork_network + .merge_requests + .opened + .where.not(target_project: @project) + .from_project(@project) merge_requests.each do |mr| ::MergeRequests::CloseService.new(@project, @current_user).execute(mr) end - refresh_forks_count(@project.forked_from_project) - @project.fork_network_member.destroy @project.forked_project_link.destroy end |