diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-17 12:07:33 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-17 12:07:33 +0000 |
commit | 6b75320f525f841454f1ab162d141d3610f2e77b (patch) | |
tree | 4971c27759e4fbc18b85e71800c3b9c12346317e /app/services/git | |
parent | 4226aca420920c1844e8eade4798a2dff188a6fc (diff) | |
download | gitlab-ce-6b75320f525f841454f1ab162d141d3610f2e77b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/git')
-rw-r--r-- | app/services/git/base_hooks_service.rb | 2 | ||||
-rw-r--r-- | app/services/git/process_ref_changes_service.rb | 21 |
2 files changed, 19 insertions, 4 deletions
diff --git a/app/services/git/base_hooks_service.rb b/app/services/git/base_hooks_service.rb index b1faef58e33..0801fd4d03f 100644 --- a/app/services/git/base_hooks_service.rb +++ b/app/services/git/base_hooks_service.rb @@ -48,6 +48,8 @@ module Git # Push events in the activity feed only show information for the # last commit. def create_events + return unless params.fetch(:create_push_event, true) + EventCreateService.new.push(project, current_user, event_push_data) end diff --git a/app/services/git/process_ref_changes_service.rb b/app/services/git/process_ref_changes_service.rb index 62159d4e7e5..3052bed51bc 100644 --- a/app/services/git/process_ref_changes_service.rb +++ b/app/services/git/process_ref_changes_service.rb @@ -16,8 +16,8 @@ module Git def process_changes_by_action(ref_type, changes) changes_by_action = group_changes_by_action(changes) - changes_by_action.each do |_, changes| - process_changes(ref_type, changes, execute_project_hooks: execute_project_hooks?(changes)) if changes.any? + changes_by_action.each do |action, changes| + process_changes(ref_type, action, changes, execute_project_hooks: execute_project_hooks?(changes)) if changes.any? end end @@ -38,9 +38,11 @@ module Git (changes.size <= Gitlab::CurrentSettings.push_event_hooks_limit) || Feature.enabled?(:git_push_execute_all_project_hooks, project) end - def process_changes(ref_type, changes, execute_project_hooks:) + def process_changes(ref_type, action, changes, execute_project_hooks:) push_service_class = push_service_class_for(ref_type) + create_bulk_push_event = changes.size > Gitlab::CurrentSettings.push_event_activities_limit + changes.each do |change| push_service_class.new( project, @@ -48,9 +50,20 @@ module Git change: change, push_options: params[:push_options], create_pipelines: change[:index] < PIPELINE_PROCESS_LIMIT || Feature.enabled?(:git_push_create_all_pipelines, project), - execute_project_hooks: execute_project_hooks + execute_project_hooks: execute_project_hooks, + create_push_event: !create_bulk_push_event ).execute end + + create_bulk_push_event(ref_type, action, changes) if create_bulk_push_event + end + + def create_bulk_push_event(ref_type, action, changes) + EventCreateService.new.bulk_push( + project, + current_user, + Gitlab::DataBuilder::Push.build_bulk(action: action, ref_type: ref_type, changes: changes) + ) end def push_service_class_for(ref_type) |