Avoid Gitaly N+1 calls by caching tag_names
This commit is contained in:
parent
0ea70802e1
commit
f8c3a58a54
3 changed files with 17 additions and 0 deletions
|
@ -221,6 +221,12 @@ class Repository
|
|||
branch_names.include?(branch_name)
|
||||
end
|
||||
|
||||
def tag_exists?(tag_name)
|
||||
return false unless raw_repository
|
||||
|
||||
tag_names.include?(tag_name)
|
||||
end
|
||||
|
||||
def ref_exists?(ref)
|
||||
!!raw_repository&.ref_exists?(ref)
|
||||
rescue ArgumentError
|
||||
|
|
|
@ -7,6 +7,8 @@ describe Projects::PipelineSchedulesController do
|
|||
set(:pipeline_schedule) { create(:ci_pipeline_schedule, project: project) }
|
||||
|
||||
describe 'GET #index' do
|
||||
render_views
|
||||
|
||||
let(:scope) { nil }
|
||||
let!(:inactive_pipeline_schedule) do
|
||||
create(:ci_pipeline_schedule, :inactive, project: project)
|
||||
|
|
|
@ -1157,6 +1157,15 @@ describe Repository do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#tag_exists?' do
|
||||
it 'uses tag_names' do
|
||||
allow(repository).to receive(:tag_names).and_return(['foobar'])
|
||||
|
||||
expect(repository.tag_exists?('foobar')).to eq(true)
|
||||
expect(repository.tag_exists?('master')).to eq(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#branch_names', :use_clean_rails_memory_store_caching do
|
||||
let(:fake_branch_names) { ['foobar'] }
|
||||
|
||||
|
|
Loading…
Reference in a new issue