Commit fe6d392236fb6f1edd5dc1c33d52806cb4fa8a39
1 parent
68b89142
Exists in
spb-stable
and in
2 other branches
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,6 +111,45 @@ module API | ||
111 | end | 111 | end |
112 | end | 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 | # Get a merge request's comments | 153 | # Get a merge request's comments |
115 | # | 154 | # |
116 | # Parameters: | 155 | # Parameters: |