summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Papa <fabtheman@gmail.com>2019-06-13 10:46:47 +0000
committerDouwe Maan <douwe@gitlab.com>2019-06-13 10:46:47 +0000
commit352b43e0af67377b8e75b4a082418e32b13ee5f6 (patch)
tree424cb0499d657602dd77aef0bdaad63d77ca41dc
parent4eb63d82d923bf884a1758536b2b8930bb9896b0 (diff)
downloadgitlab-ce-352b43e0af67377b8e75b4a082418e32b13ee5f6.tar.gz
Modify the branch hooks spec to expect processing of commit messages
Commit messages are not processed for references to issues when creating the default branch on push. This was expected behavior (probably to avoid performance problems when first pushing a repository with thousands of commits). However, this is not an issue because we always limit the number of commits to process to 100 regardless of whether we are creating the default branch or not.
-rw-r--r--app/services/git/branch_hooks_service.rb6
-rw-r--r--changelogs/unreleased/patch-issue--56683.yml6
-rw-r--r--spec/services/git/branch_hooks_service_spec.rb4
3 files changed, 9 insertions, 7 deletions
diff --git a/app/services/git/branch_hooks_service.rb b/app/services/git/branch_hooks_service.rb
index d21a6bb1b9a..4aee48f22e7 100644
--- a/app/services/git/branch_hooks_service.rb
+++ b/app/services/git/branch_hooks_service.rb
@@ -20,8 +20,7 @@ module Git
strong_memoize(:commits) do
if creating_default_branch?
# The most recent PROCESS_COMMIT_LIMIT commits in the default branch
- offset = [count_commits_in_branch - PROCESS_COMMIT_LIMIT, 0].max
- project.repository.commits(params[:newrev], offset: offset, limit: PROCESS_COMMIT_LIMIT)
+ project.repository.commits(params[:newrev], limit: PROCESS_COMMIT_LIMIT)
elsif creating_branch?
# Use the pushed commits that aren't reachable by the default branch
# as a heuristic. This may include more commits than are actually
@@ -84,9 +83,6 @@ module Git
# Schedules processing of commit messages
def enqueue_process_commit_messages
- # don't process commits for the initial push to the default branch
- return if creating_default_branch?
-
limited_commits.each do |commit|
next unless commit.matches_cross_reference_regex?
diff --git a/changelogs/unreleased/patch-issue--56683.yml b/changelogs/unreleased/patch-issue--56683.yml
new file mode 100644
index 00000000000..9b82c6c1459
--- /dev/null
+++ b/changelogs/unreleased/patch-issue--56683.yml
@@ -0,0 +1,6 @@
+---
+title: Process up to 100 commit messages for references when pushing to a new default
+ branch
+merge_request: 29511
+author: Fabio Papa
+type: fixed
diff --git a/spec/services/git/branch_hooks_service_spec.rb b/spec/services/git/branch_hooks_service_spec.rb
index 22faa996015..b5694628269 100644
--- a/spec/services/git/branch_hooks_service_spec.rb
+++ b/spec/services/git/branch_hooks_service_spec.rb
@@ -287,8 +287,8 @@ describe Git::BranchHooksService do
context 'creating the default branch' do
let(:oldrev) { Gitlab::Git::BLANK_SHA }
- it 'does not process commit messages' do
- expect(ProcessCommitWorker).not_to receive(:perform_async)
+ it 'processes a limited number of commit messages' do
+ expect(ProcessCommitWorker).to receive(:perform_async).once
service.execute
end