debian-mirror-gitlab/app/services/merge_requests/after_create_service.rb

65 lines
2.3 KiB
Ruby
Raw Normal View History

2020-04-08 14:13:33 +05:30
# frozen_string_literal: true
module MergeRequests
class AfterCreateService < MergeRequests::BaseService
2022-01-26 12:08:38 +05:30
include Gitlab::Utils::StrongMemoize
2020-04-08 14:13:33 +05:30
def execute(merge_request)
2022-01-26 12:08:38 +05:30
prepare_for_mergeability(merge_request) if early_prepare_for_mergeability?(merge_request)
2021-04-17 20:07:23 +05:30
prepare_merge_request(merge_request)
2022-01-26 12:08:38 +05:30
mark_as_unchecked(merge_request) unless early_prepare_for_mergeability?(merge_request)
2021-04-17 20:07:23 +05:30
end
private
2022-01-26 12:08:38 +05:30
def prepare_for_mergeability(merge_request)
create_pipeline_for(merge_request, current_user)
merge_request.update_head_pipeline
mark_as_unchecked(merge_request)
end
2021-04-17 20:07:23 +05:30
def prepare_merge_request(merge_request)
2020-04-08 14:13:33 +05:30
event_service.open_mr(merge_request, current_user)
2021-04-17 20:07:23 +05:30
2021-03-08 18:12:59 +05:30
merge_request_activity_counter.track_create_mr_action(user: current_user)
2021-04-17 20:07:23 +05:30
merge_request_activity_counter.track_mr_including_ci_config(user: current_user, merge_request: merge_request)
2020-04-08 14:13:33 +05:30
notification_service.new_merge_request(merge_request, current_user)
2022-01-26 12:08:38 +05:30
unless early_prepare_for_mergeability?(merge_request)
create_pipeline_for(merge_request, current_user)
merge_request.update_head_pipeline
end
2020-04-08 14:13:33 +05:30
merge_request.diffs(include_stats: false).write_cache
merge_request.create_cross_references!(current_user)
2021-02-22 17:27:13 +05:30
2021-03-08 18:12:59 +05:30
OnboardingProgressService.new(merge_request.target_project.namespace).execute(action: :merge_request_created)
2021-04-29 21:17:54 +05:30
todo_service.new_merge_request(merge_request, current_user)
merge_request.cache_merge_request_closes_issues!(current_user)
Gitlab::UsageDataCounters::MergeRequestCounter.count(:create)
link_lfs_objects(merge_request)
delete_milestone_total_merge_requests_counter_cache(merge_request.milestone)
end
def link_lfs_objects(merge_request)
2021-06-08 01:23:25 +05:30
LinkLfsObjectsService.new(project: merge_request.target_project).execute(merge_request)
2020-04-08 14:13:33 +05:30
end
2022-01-26 12:08:38 +05:30
def early_prepare_for_mergeability?(merge_request)
strong_memoize("early_prepare_for_mergeability_#{merge_request.target_project_id}".to_sym) do
Feature.enabled?(:early_prepare_for_mergeability, merge_request.target_project)
end
end
def mark_as_unchecked(merge_request)
merge_request.mark_as_unchecked if merge_request.preparing?
end
2020-04-08 14:13:33 +05:30
end
end
2020-10-24 23:57:45 +05:30
2021-06-08 01:23:25 +05:30
MergeRequests::AfterCreateService.prepend_mod_with('MergeRequests::AfterCreateService')