Unify lib/api/merge_requests.rb with EE
This commit is contained in:
parent
49f72d0665
commit
156cc98d10
|
@ -6,6 +6,32 @@ module API
|
|||
|
||||
helpers ::Gitlab::IssuableMetadata
|
||||
|
||||
# EE::API::MergeRequests would override the following helpers
|
||||
helpers do
|
||||
params :optional_params_ee do
|
||||
end
|
||||
|
||||
params :merge_params_ee do
|
||||
end
|
||||
|
||||
def update_merge_request_ee(merge_request)
|
||||
end
|
||||
end
|
||||
|
||||
def self.update_params_at_least_one_of
|
||||
%i[
|
||||
assignee_id
|
||||
description
|
||||
labels
|
||||
milestone_id
|
||||
remove_source_branch
|
||||
state_event
|
||||
target_branch
|
||||
title
|
||||
discussion_locked
|
||||
]
|
||||
end
|
||||
|
||||
helpers do
|
||||
def find_merge_requests(args = {})
|
||||
args = declared_params.merge(args)
|
||||
|
@ -31,6 +57,12 @@ module API
|
|||
mr.all_pipelines
|
||||
end
|
||||
|
||||
def check_sha_param!(params, merge_request)
|
||||
if params[:sha] && merge_request.diff_head_sha != params[:sha]
|
||||
render_api_error!("SHA does not match HEAD of source branch: #{merge_request.diff_head_sha}", 409)
|
||||
end
|
||||
end
|
||||
|
||||
params :merge_requests_params do
|
||||
optional :state, type: String, values: %w[opened closed merged all], default: 'all',
|
||||
desc: 'Return opened, closed, merged, or all merge requests'
|
||||
|
@ -106,16 +138,14 @@ module API
|
|||
render_api_error!(errors, 400)
|
||||
end
|
||||
|
||||
params :optional_params_ce do
|
||||
params :optional_params do
|
||||
optional :description, type: String, desc: 'The description of the merge request'
|
||||
optional :assignee_id, type: Integer, desc: 'The ID of a user to assign the merge request'
|
||||
optional :milestone_id, type: Integer, desc: 'The ID of a milestone to assign the merge request'
|
||||
optional :labels, type: String, desc: 'Comma-separated list of label names'
|
||||
optional :remove_source_branch, type: Boolean, desc: 'Remove source branch when merging'
|
||||
end
|
||||
|
||||
params :optional_params do
|
||||
use :optional_params_ce
|
||||
use :optional_params_ee
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -240,18 +270,6 @@ module API
|
|||
success Entities::MergeRequest
|
||||
end
|
||||
params do
|
||||
# CE
|
||||
at_least_one_of_ce = [
|
||||
:assignee_id,
|
||||
:description,
|
||||
:labels,
|
||||
:milestone_id,
|
||||
:remove_source_branch,
|
||||
:state_event,
|
||||
:target_branch,
|
||||
:title,
|
||||
:discussion_locked
|
||||
]
|
||||
optional :title, type: String, allow_blank: false, desc: 'The title of the merge request'
|
||||
optional :target_branch, type: String, allow_blank: false, desc: 'The target branch'
|
||||
optional :state_event, type: String, values: %w[close reopen],
|
||||
|
@ -259,7 +277,7 @@ module API
|
|||
optional :discussion_locked, type: Boolean, desc: 'Whether the MR discussion is locked'
|
||||
|
||||
use :optional_params
|
||||
at_least_one_of(*at_least_one_of_ce)
|
||||
at_least_one_of(*::API::MergeRequests.update_params_at_least_one_of)
|
||||
end
|
||||
put ':id/merge_requests/:merge_request_iid' do
|
||||
Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42318')
|
||||
|
@ -282,13 +300,14 @@ module API
|
|||
success Entities::MergeRequest
|
||||
end
|
||||
params do
|
||||
# CE
|
||||
optional :merge_commit_message, type: String, desc: 'Custom merge commit message'
|
||||
optional :should_remove_source_branch, type: Boolean,
|
||||
desc: 'When true, the source branch will be deleted if possible'
|
||||
optional :merge_when_pipeline_succeeds, type: Boolean,
|
||||
desc: 'When true, this merge request will be merged when the pipeline succeeds'
|
||||
optional :sha, type: String, desc: 'When present, must have the HEAD SHA of the source branch'
|
||||
|
||||
use :merge_params_ee
|
||||
end
|
||||
put ':id/merge_requests/:merge_request_iid/merge' do
|
||||
Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42317')
|
||||
|
@ -304,9 +323,9 @@ module API
|
|||
|
||||
render_api_error!('Branch cannot be merged', 406) unless merge_request.mergeable?(skip_ci_check: merge_when_pipeline_succeeds)
|
||||
|
||||
if params[:sha] && merge_request.diff_head_sha != params[:sha]
|
||||
render_api_error!("SHA does not match HEAD of source branch: #{merge_request.diff_head_sha}", 409)
|
||||
end
|
||||
check_sha_param!(params, merge_request)
|
||||
|
||||
update_merge_request_ee(merge_request)
|
||||
|
||||
merge_params = {
|
||||
commit_message: params[:merge_commit_message],
|
||||
|
|
Loading…
Reference in New Issue