diff options
author | Oswaldo Ferreira <oswaldo@gitlab.com> | 2019-05-21 18:14:22 -0300 |
---|---|---|
committer | Oswaldo Ferreira <oswaldo@gitlab.com> | 2019-05-31 19:16:01 -0300 |
commit | b965009ddddcd50e76841dbc97d2767292e88a0a (patch) | |
tree | 5c8e87e5c96454ee0cf918a5b7b878ee95d5ed4b /lib/api/merge_requests.rb | |
parent | 15916ad55920ca582a9124f7f0737b0373432a99 (diff) | |
download | gitlab-ce-b965009ddddcd50e76841dbc97d2767292e88a0a.tar.gz |
Automatically update MR merge-ref along merge status
This couples the code that transitions the `MergeRequest#merge_status`
and refs/merge-requests/:iid/merge ref update.
In general, instead of directly telling `MergeToRefService` to update
the merge ref, we should rely on `MergeabilityCheckService` to keep
both the merge status and merge ref synced. Now, if the merge_status is
`can_be_merged` it means the merge-ref is also updated to the latest.
We've also updated the logic to be more systematic and less user-based.
Diffstat (limited to 'lib/api/merge_requests.rb')
-rw-r--r-- | lib/api/merge_requests.rb | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index ce85772e4ed..59b5346ffbb 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -398,28 +398,16 @@ module API present merge_request, with: Entities::MergeRequest, current_user: current_user, project: user_project end - desc 'Merge a merge request to its default temporary merge ref path' - params do - optional :merge_commit_message, type: String, desc: 'Custom merge commit message' - end - put ':id/merge_requests/:merge_request_iid/merge_to_ref' do + desc 'Returns an up to date merge-ref HEAD' + get ':id/merge_requests/:merge_request_iid/merge_ref' do merge_request = find_project_merge_request(params[:merge_request_iid]) - authorize! :admin_merge_request, user_project - - merge_params = { - commit_message: params[:merge_commit_message] - } - - result = ::MergeRequests::MergeToRefService - .new(merge_request.target_project, current_user, merge_params) - .execute(merge_request) + result = merge_request.check_mergeability - if result[:status] == :success - present result.slice(:commit_id), 200 + if result.success? && commit = merge_request.merge_ref_head + present :commit_id, commit.sha else - http_status = result[:http_status] || 400 - render_api_error!(result[:message], http_status) + render_api_error!(result.message, 400) end end |