diff options
| author | Douwe Maan <douwe@gitlab.com> | 2016-04-04 15:37:08 +0000 |
|---|---|---|
| committer | Douwe Maan <douwe@gitlab.com> | 2016-04-04 15:37:08 +0000 |
| commit | f505c753b02a7a0b41cc42a85ac15017af4ed86f (patch) | |
| tree | d1ea34378c2fcf74db0c0b1937f14d3df84d4ff4 /app/services/projects | |
| parent | 5e8740eef01ff5263a8b75a96d2109dfae2c63c0 (diff) | |
| parent | a6b5b50e14885a82530794c6ea35c940305244dd (diff) | |
| download | gitlab-ce-f505c753b02a7a0b41cc42a85ac15017af4ed86f.tar.gz | |
Merge branch 'fix_remove_fork_link' into 'master'
Remove fork link closes all merge requests opened on source project
Currently, if you:
- create a fork
- open a merge request on the source project
- remove the fork link
The created MR cannot be closed.
With this MR, all pending MR is closed when the fork link is removed.
See merge request !3189
Diffstat (limited to 'app/services/projects')
| -rw-r--r-- | app/services/projects/unlink_fork_service.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/app/services/projects/unlink_fork_service.rb b/app/services/projects/unlink_fork_service.rb new file mode 100644 index 00000000000..315c3e16292 --- /dev/null +++ b/app/services/projects/unlink_fork_service.rb @@ -0,0 +1,19 @@ +module Projects + class UnlinkForkService < BaseService + def execute + return unless @project.forked? + + @project.forked_from_project.lfs_objects.find_each do |lfs_object| + lfs_object.projects << @project + end + + merge_requests = @project.forked_from_project.merge_requests.opened.from_project(@project) + + merge_requests.each do |mr| + MergeRequests::CloseService.new(@project, @current_user).execute(mr) + end + + @project.forked_project_link.destroy + end + end +end |
