From fe6d392236fb6f1edd5dc1c33d52806cb4fa8a39 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 12 May 2014 16:34:41 +0300 Subject: [PATCH] Draft API method for merge MR Signed-off-by: Dmitriy Zaporozhets --- lib/api/merge_requests.rb | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 4b88b0f84c1..fe615dfac05 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -111,6 +111,45 @@ module API end end + # Merge MR + # + # Parameters: + # id (required) - The ID of a project + # merge_request_id (required) - ID of MR + # merge_commit_message (optional) - Custom merge commit message + # Example: + # PUT /projects/:id/merge_request/:merge_request_id/merge + # + put ":id/merge_request/:merge_request_id/merge" do + merge_request = user_project.merge_requests.find(params[:merge_request_id]) + + action = if user_project.protected_branch?(merge_request.target_branch) + :push_code_to_protected_branches + else + :push_code + end + + if can?(current_user, action, project) + # Check if MR can be merged by GitLab + if merge_request.unchecked? + merge_request.check_if_can_be_merged + end + + if merge_request.open? && merge_request.can_be_merged? + merge_request.automerge!(current_user, params[:merge_commit_message] || merge_request.merge_commit_message) + + # return success + else + + # Checkif can be merged + end + + else + # not allowed + end + end + + # Get a merge request's comments # # Parameters: