diff options
author | Jarka Kadlecova <kadlecovaj@gmail.com> | 2016-11-24 15:05:15 +0100 |
---|---|---|
committer | Jarka Kadlecova <jarka@gitlab.com> | 2017-01-11 08:48:07 -0500 |
commit | 7ab3dd4b302a85c1b005e9ef290ebac631cda673 (patch) | |
tree | 9210fbc8f4e53c33970e6218c822de95c8963288 /app/services/merge_requests/update_service.rb | |
parent | 4404ea8662508c60f96e6730d9a45feb68498c28 (diff) | |
download | gitlab-ce-7ab3dd4b302a85c1b005e9ef290ebac631cda673.tar.gz |
support `/merge` slash comand for MRs
Diffstat (limited to 'app/services/merge_requests/update_service.rb')
-rw-r--r-- | app/services/merge_requests/update_service.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb index ad16ef8c70f..3cb9aae83f6 100644 --- a/app/services/merge_requests/update_service.rb +++ b/app/services/merge_requests/update_service.rb @@ -7,6 +7,8 @@ module MergeRequests params.except!(:target_project_id) params.except!(:source_branch) + merge_from_slash_command(merge_request) if params[:merge] + if merge_request.closed_without_fork? params.except!(:target_branch, :force_remove_source_branch) end @@ -69,6 +71,19 @@ module MergeRequests end end + def merge_from_slash_command(merge_request) + last_diff_sha = params.delete(:merge) + return unless merge_request.mergeable_with_slash_command?(current_user, last_diff_sha: last_diff_sha) + + merge_request.update(merge_error: nil) + + if merge_request.head_pipeline && merge_request.head_pipeline.active? + MergeRequests::MergeWhenPipelineSucceedsService.new(project, current_user).execute(merge_request) + else + MergeWorker.perform_async(merge_request.id, current_user.id, {}) + end + end + def reopen_service MergeRequests::ReopenService end |