Class: MergeRequests::PostMergeService
- Inherits:
-
BaseService
- Object
- BaseContainerService
- IssuableBaseService
- BaseService
- MergeRequests::PostMergeService
- Includes:
- RemovesRefs
- Defined in:
- app/services/merge_requests/post_merge_service.rb
Overview
PostMergeService class
Mark existing merge request as merged and execute all hooks and notifications
Constant Summary collapse
- MAX_RETARGET_MERGE_REQUESTS =
4- BATCH_SIZE =
100
Instance Attribute Summary
Attributes inherited from BaseContainerService
#container, #current_user, #group, #params, #project
Instance Method Summary collapse
Methods included from RemovesRefs
Methods inherited from BaseService
#cancel_review_app_jobs!, #cleanup_environments, constructor_container_arg, #deactivate_pages_deployments, #execute_external_hooks, #execute_group_mention_hooks, #execute_hooks, #handle_assignees_change, #handle_changes, #handle_reviewers_change, #hook_data, #initialize, #inspect, #merge_request_activity_counter, #source_project, #target_project
Methods included from Gitlab::Utils::Override
#extended, extensions, #included, #method_added, #override, #prepended, #queue_verification, verify!
Methods included from ErrorLogger
Methods included from AssignsMergeParams
#assign_allowed_merge_params, included
Methods inherited from IssuableBaseService
Methods inherited from BaseContainerService
#group_container?, #initialize, #namespace_container?, #project_container?, #project_group, #root_ancestor
Methods included from BaseServiceUtility
#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level
Methods included from Gitlab::Allowable
Constructor Details
This class inherits a constructor from MergeRequests::BaseService
Instance Method Details
#create_note(merge_request, source) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'app/services/merge_requests/post_merge_service.rb', line 52 def create_note(merge_request, source) SystemNoteService.change_status( merge_request, merge_request.target_project, current_user, merge_request.state, source ) end |
#execute(merge_request, source = nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/merge_requests/post_merge_service.rb', line 15 def execute(merge_request, source = nil) return if merge_request.merged? # Mark the merge request as merged, everything that happens afterwards is # executed once unless merge_request.mark_as_merged Gitlab::AppLogger.warn( message: 'Failed to mark merge request as merged', merge_request_id: merge_request.id, merge_request_iid: merge_request.iid, project_id: merge_request.project_id, delete_source_branch: params[:delete_source_branch], errors: merge_request.errors. ) end create_event(merge_request) todo_service.merge_merge_request(merge_request, current_user) merge_request_activity_counter.track_merge_mr_action(user: current_user) create_note(merge_request, source) close_issues(merge_request) notification_service.merge_mr(merge_request, current_user) invalidate_all_users_cache_count(merge_request) merge_request.invalidate_project_counter_caches delete_non_latest_diffs(merge_request) cancel_review_app_jobs!(merge_request) cleanup_environments(merge_request) cleanup_refs(merge_request) deactivate_pages_deployments(merge_request) cancel_auto_merges_targeting_source_branch(merge_request) trigger_user_merge_request_updated(merge_request) execute_hooks(merge_request, 'merge') end |