diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-05-20 21:41:02 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-05-20 21:41:02 +0000 |
commit | baccd1838c92a0d38d3f38b93e9911c97adfef21 (patch) | |
tree | 23e42bfa3f6c30d01aee84f2a8cc6cca2d2eba6f /app/services | |
parent | fc1910ddc5db25e608921f69c3dc28d830e6ea03 (diff) | |
parent | 7880a300dc9ef3fcceb7f1a6af6a6500b0b46e5c (diff) | |
download | gitlab-ce-baccd1838c92a0d38d3f38b93e9911c97adfef21.tar.gz |
Merge branch 'rm-source-branch' into 'master'
Allows MR authors to have the source branch removed when merging the MR
closes #13191
The location of the checkbox might not be optimal so any feedback is welcome. Any other feedback too obviously.
Screenshot:
![Screenshot_2016-02-17_21.25.24](/uploads/a9c3eaafb39c6f5b4f0949a2278af6da/Screenshot_2016-02-17_21.25.24.png)
See merge request !2801
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/merge_requests/create_service.rb | 7 | ||||
-rw-r--r-- | app/services/merge_requests/merge_service.rb | 8 | ||||
-rw-r--r-- | app/services/merge_requests/update_service.rb | 2 |
3 files changed, 13 insertions, 4 deletions
diff --git a/app/services/merge_requests/create_service.rb b/app/services/merge_requests/create_service.rb index 33609d01f20..96a25330af1 100644 --- a/app/services/merge_requests/create_service.rb +++ b/app/services/merge_requests/create_service.rb @@ -8,11 +8,14 @@ module MergeRequests @project = Project.find(params[:target_project_id]) if params[:target_project_id] filter_params - label_params = params[:label_ids] - merge_request = MergeRequest.new(params.except(:label_ids)) + label_params = params.delete(:label_ids) + force_remove_source_branch = params.delete(:force_remove_source_branch) + + merge_request = MergeRequest.new(params) merge_request.source_project = source_project merge_request.target_project ||= source_project merge_request.author = current_user + merge_request.merge_params['force_remove_source_branch'] = force_remove_source_branch if merge_request.save merge_request.update_attributes(label_ids: label_params) diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb index 9a58383b398..9aaf5a5e561 100644 --- a/app/services/merge_requests/merge_service.rb +++ b/app/services/merge_requests/merge_service.rb @@ -45,10 +45,14 @@ module MergeRequests def after_merge MergeRequests::PostMergeService.new(project, current_user).execute(merge_request) - if params[:should_remove_source_branch].present? - DeleteBranchService.new(@merge_request.source_project, current_user). + if params[:should_remove_source_branch].present? || @merge_request.force_remove_source_branch? + DeleteBranchService.new(@merge_request.source_project, branch_deletion_user). execute(merge_request.source_branch) end end + + def branch_deletion_user + @merge_request.force_remove_source_branch? ? @merge_request.author : current_user + end end end diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb index 477c64e7377..026a37997d4 100644 --- a/app/services/merge_requests/update_service.rb +++ b/app/services/merge_requests/update_service.rb @@ -11,6 +11,8 @@ module MergeRequests params.except!(:target_project_id) params.except!(:source_branch) + merge_request.merge_params['force_remove_source_branch'] = params.delete(:force_remove_source_branch) + update(merge_request) end |