diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 09:08:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-19 09:08:42 +0000 |
commit | b76ae638462ab0f673e5915986070518dd3f9ad3 (patch) | |
tree | bdab0533383b52873be0ec0eb4d3c66598ff8b91 /app/services/merge_requests | |
parent | 434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff) | |
download | gitlab-ce-b76ae638462ab0f673e5915986070518dd3f9ad3.tar.gz |
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'app/services/merge_requests')
6 files changed, 30 insertions, 7 deletions
diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb index 099ab1d26e9..0a652c58aab 100644 --- a/app/services/merge_requests/base_service.rb +++ b/app/services/merge_requests/base_service.rb @@ -61,8 +61,8 @@ module MergeRequests end def cleanup_environments(merge_request) - Ci::StopEnvironmentsService.new(merge_request.source_project, current_user) - .execute_for_merge_request(merge_request) + Environments::StopService.new(merge_request.source_project, current_user) + .execute_for_merge_request(merge_request) end def cancel_review_app_jobs!(merge_request) diff --git a/app/services/merge_requests/conflicts/base_service.rb b/app/services/merge_requests/conflicts/base_service.rb index 402f6c4e4c0..70add2fdcb1 100644 --- a/app/services/merge_requests/conflicts/base_service.rb +++ b/app/services/merge_requests/conflicts/base_service.rb @@ -3,10 +3,11 @@ module MergeRequests module Conflicts class BaseService - attr_reader :merge_request + attr_reader :merge_request, :params - def initialize(merge_request) + def initialize(merge_request, params = {}) @merge_request = merge_request + @params = params end end end diff --git a/app/services/merge_requests/conflicts/list_service.rb b/app/services/merge_requests/conflicts/list_service.rb index 30a493e91ce..575a6bfe95a 100644 --- a/app/services/merge_requests/conflicts/list_service.rb +++ b/app/services/merge_requests/conflicts/list_service.rb @@ -23,7 +23,11 @@ module MergeRequests end def conflicts - @conflicts ||= Gitlab::Conflict::FileCollection.new(merge_request) + @conflicts ||= + Gitlab::Conflict::FileCollection.new( + merge_request, + allow_tree_conflicts: params[:allow_tree_conflicts] + ) end end end diff --git a/app/services/merge_requests/create_pipeline_service.rb b/app/services/merge_requests/create_pipeline_service.rb index ebeba0ee5b8..6b032545230 100644 --- a/app/services/merge_requests/create_pipeline_service.rb +++ b/app/services/merge_requests/create_pipeline_service.rb @@ -3,7 +3,7 @@ module MergeRequests class CreatePipelineService < MergeRequests::BaseService def execute(merge_request) - return unless can_create_pipeline_for?(merge_request) + return cannot_create_pipeline_error unless can_create_pipeline_for?(merge_request) create_detached_merge_request_pipeline(merge_request) end @@ -60,6 +60,10 @@ module MergeRequests ::Gitlab::UserAccess.new(current_user, container: merge_request.target_project) .can_update_branch?(merge_request.source_branch_ref) end + + def cannot_create_pipeline_error + ServiceResponse.error(message: 'Cannot create a pipeline for this merge request.', payload: nil) + end end end diff --git a/app/services/merge_requests/merge_to_ref_service.rb b/app/services/merge_requests/merge_to_ref_service.rb index e07e0c985b4..eda652c4b9a 100644 --- a/app/services/merge_requests/merge_to_ref_service.rb +++ b/app/services/merge_requests/merge_to_ref_service.rb @@ -66,6 +66,16 @@ module MergeRequests end def commit + if Feature.enabled?(:cache_merge_to_ref_calls, project, default_enabled: false) + Rails.cache.fetch(cache_key, expires_in: 1.day) do + extracted_merge_to_ref + end + else + extracted_merge_to_ref + end + end + + def extracted_merge_to_ref repository.merge_to_ref(current_user, source_sha: source, branch: merge_request.target_branch, @@ -76,5 +86,9 @@ module MergeRequests rescue Gitlab::Git::PreReceiveError, Gitlab::Git::CommandError => error raise MergeError, error.message end + + def cache_key + [:merge_to_ref_service, project.full_path, merge_request.target_branch_sha, merge_request.source_branch_sha] + end end end diff --git a/app/services/merge_requests/push_options_handler_service.rb b/app/services/merge_requests/push_options_handler_service.rb index 79b7eb8d9d8..adbe3ddfdad 100644 --- a/app/services/merge_requests/push_options_handler_service.rb +++ b/app/services/merge_requests/push_options_handler_service.rb @@ -65,7 +65,7 @@ module MergeRequests end if push_options[:target] && !target_project.repository.branch_exists?(push_options[:target]) - errors << "Branch #{push_options[:target]} does not exist" + errors << "Target branch #{target_project.full_path}:#{push_options[:target]} does not exist" end end |