Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/services/batched_git_ref_updates/project_cleanup_service.rb2
-rw-r--r--spec/services/batched_git_ref_updates/project_cleanup_service_spec.rb9
2 files changed, 10 insertions, 1 deletions
diff --git a/app/services/batched_git_ref_updates/project_cleanup_service.rb b/app/services/batched_git_ref_updates/project_cleanup_service.rb
index f9518cad975..7367c8be1d1 100644
--- a/app/services/batched_git_ref_updates/project_cleanup_service.rb
+++ b/app/services/batched_git_ref_updates/project_cleanup_service.rb
@@ -28,7 +28,7 @@ module BatchedGitRefUpdates
refs = batch.map(&:ref)
refs.each_slice(GITALY_BATCH_SIZE) do |refs_to_delete|
- project.repository.delete_refs(*refs_to_delete)
+ project.repository.delete_refs(*refs_to_delete.uniq)
end
total_deletes += refs.count
diff --git a/spec/services/batched_git_ref_updates/project_cleanup_service_spec.rb b/spec/services/batched_git_ref_updates/project_cleanup_service_spec.rb
index dcdfdfade3c..e8ac9588ef3 100644
--- a/spec/services/batched_git_ref_updates/project_cleanup_service_spec.rb
+++ b/spec/services/batched_git_ref_updates/project_cleanup_service_spec.rb
@@ -53,6 +53,15 @@ RSpec.describe BatchedGitRefUpdates::ProjectCleanupService, feature_category: :g
expect(test_refs(project2)).to include('refs/test/project2-ref1')
end
+ it 'handles duplicates' do
+ BatchedGitRefUpdates::Deletion.create!(project_id: project1.id, ref: 'refs/test/some-duplicate')
+ BatchedGitRefUpdates::Deletion.create!(project_id: project1.id, ref: 'refs/test/some-duplicate')
+
+ service.execute
+
+ expect(test_refs(project1)).not_to include('refs/test/some-duplicate')
+ end
+
it 'marks the processed BatchedGitRefUpdates::Deletion as processed' do
service.execute