Commit fe6d392236fb6f1edd5dc1c33d52806cb4fa8a39

Authored by Dmitriy Zaporozhets
1 parent 68b89142

Draft API method for merge MR

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing 1 changed file with 39 additions and 0 deletions   Show diff stats
lib/api/merge_requests.rb
... ... @@ -111,6 +111,45 @@ module API
111 111 end
112 112 end
113 113  
  114 + # Merge MR
  115 + #
  116 + # Parameters:
  117 + # id (required) - The ID of a project
  118 + # merge_request_id (required) - ID of MR
  119 + # merge_commit_message (optional) - Custom merge commit message
  120 + # Example:
  121 + # PUT /projects/:id/merge_request/:merge_request_id/merge
  122 + #
  123 + put ":id/merge_request/:merge_request_id/merge" do
  124 + merge_request = user_project.merge_requests.find(params[:merge_request_id])
  125 +
  126 + action = if user_project.protected_branch?(merge_request.target_branch)
  127 + :push_code_to_protected_branches
  128 + else
  129 + :push_code
  130 + end
  131 +
  132 + if can?(current_user, action, project)
  133 + # Check if MR can be merged by GitLab
  134 + if merge_request.unchecked?
  135 + merge_request.check_if_can_be_merged
  136 + end
  137 +
  138 + if merge_request.open? && merge_request.can_be_merged?
  139 + merge_request.automerge!(current_user, params[:merge_commit_message] || merge_request.merge_commit_message)
  140 +
  141 + # return success
  142 + else
  143 +
  144 + # Checkif can be merged
  145 + end
  146 +
  147 + else
  148 + # not allowed
  149 + end
  150 + end
  151 +
  152 +
114 153 # Get a merge request's comments
115 154 #
116 155 # Parameters:
... ...