Merge branch 'gitaly-branch-tag-count' into 'master'
Use Gitaly for getting Branch/Tag counts Closes gitaly#157 See merge request !10780
This commit is contained in:
commit
780dcf9cdb
|
@ -505,14 +505,8 @@ class Repository
|
||||||
delegate :tag_names, to: :raw_repository
|
delegate :tag_names, to: :raw_repository
|
||||||
cache_method :tag_names, fallback: []
|
cache_method :tag_names, fallback: []
|
||||||
|
|
||||||
def branch_count
|
delegate :branch_count, :tag_count, to: :raw_repository
|
||||||
branches.size
|
|
||||||
end
|
|
||||||
cache_method :branch_count, fallback: 0
|
cache_method :branch_count, fallback: 0
|
||||||
|
|
||||||
def tag_count
|
|
||||||
raw_repository.rugged.tags.count
|
|
||||||
end
|
|
||||||
cache_method :tag_count, fallback: 0
|
cache_method :tag_count, fallback: 0
|
||||||
|
|
||||||
def avatar
|
def avatar
|
||||||
|
|
|
@ -122,13 +122,30 @@ module Gitlab
|
||||||
|
|
||||||
# Returns the number of valid branches
|
# Returns the number of valid branches
|
||||||
def branch_count
|
def branch_count
|
||||||
rugged.branches.count do |ref|
|
Gitlab::GitalyClient.migrate(:branch_names) do |is_enabled|
|
||||||
begin
|
if is_enabled
|
||||||
ref.name && ref.target # ensures the branch is valid
|
gitaly_ref_client.count_branch_names
|
||||||
|
else
|
||||||
|
rugged.branches.count do |ref|
|
||||||
|
begin
|
||||||
|
ref.name && ref.target # ensures the branch is valid
|
||||||
|
|
||||||
true
|
true
|
||||||
rescue Rugged::ReferenceError
|
rescue Rugged::ReferenceError
|
||||||
false
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns the number of valid tags
|
||||||
|
def tag_count
|
||||||
|
Gitlab::GitalyClient.migrate(:tag_names) do |is_enabled|
|
||||||
|
if is_enabled
|
||||||
|
gitaly_ref_client.count_tag_names
|
||||||
|
else
|
||||||
|
rugged.tags.count
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -34,6 +34,14 @@ module Gitlab
|
||||||
stub.find_ref_name(request).name
|
stub.find_ref_name(request).name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def count_tag_names
|
||||||
|
tag_names.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def count_branch_names
|
||||||
|
branch_names.count
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def consume_refs_response(response, prefix:)
|
def consume_refs_response(response, prefix:)
|
||||||
|
|
|
@ -1074,20 +1074,8 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#branch_count' do
|
describe '#branch_count' do
|
||||||
before(:each) do
|
|
||||||
valid_ref = double(:ref)
|
|
||||||
invalid_ref = double(:ref)
|
|
||||||
|
|
||||||
allow(valid_ref).to receive_messages(name: 'master', target: double(:target))
|
|
||||||
|
|
||||||
allow(invalid_ref).to receive_messages(name: 'bad-branch')
|
|
||||||
allow(invalid_ref).to receive(:target) { raise Rugged::ReferenceError }
|
|
||||||
|
|
||||||
allow(repository.rugged).to receive_messages(branches: [valid_ref, invalid_ref])
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns the number of branches' do
|
it 'returns the number of branches' do
|
||||||
expect(repository.branch_count).to eq(1)
|
expect(repository.branch_count).to eq(9)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1379,12 +1379,22 @@ describe Repository, models: true do
|
||||||
describe '#branch_count' do
|
describe '#branch_count' do
|
||||||
it 'returns the number of branches' do
|
it 'returns the number of branches' do
|
||||||
expect(repository.branch_count).to be_an(Integer)
|
expect(repository.branch_count).to be_an(Integer)
|
||||||
|
|
||||||
|
# NOTE: Until rugged goes away, make sure rugged and gitaly are in sync
|
||||||
|
rugged_count = repository.raw_repository.rugged.branches.count
|
||||||
|
|
||||||
|
expect(repository.branch_count).to eq(rugged_count)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#tag_count' do
|
describe '#tag_count' do
|
||||||
it 'returns the number of tags' do
|
it 'returns the number of tags' do
|
||||||
expect(repository.tag_count).to be_an(Integer)
|
expect(repository.tag_count).to be_an(Integer)
|
||||||
|
|
||||||
|
# NOTE: Until rugged goes away, make sure rugged and gitaly are in sync
|
||||||
|
rugged_count = repository.raw_repository.rugged.tags.count
|
||||||
|
|
||||||
|
expect(repository.tag_count).to eq(rugged_count)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -230,11 +230,13 @@ describe 'gitlab:app namespace rake task' do
|
||||||
before do
|
before do
|
||||||
FileUtils.mkdir('tmp/tests/default_storage')
|
FileUtils.mkdir('tmp/tests/default_storage')
|
||||||
FileUtils.mkdir('tmp/tests/custom_storage')
|
FileUtils.mkdir('tmp/tests/custom_storage')
|
||||||
|
gitaly_address = Gitlab.config.repositories.storages.default.gitaly_address
|
||||||
storages = {
|
storages = {
|
||||||
'default' => { 'path' => Settings.absolute('tmp/tests/default_storage') },
|
'default' => { 'path' => Settings.absolute('tmp/tests/default_storage'), 'gitaly_address' => gitaly_address },
|
||||||
'custom' => { 'path' => Settings.absolute('tmp/tests/custom_storage') }
|
'custom' => { 'path' => Settings.absolute('tmp/tests/custom_storage'), 'gitaly_address' => gitaly_address }
|
||||||
}
|
}
|
||||||
allow(Gitlab.config.repositories).to receive(:storages).and_return(storages)
|
allow(Gitlab.config.repositories).to receive(:storages).and_return(storages)
|
||||||
|
Gitlab::GitalyClient.configure_channels
|
||||||
|
|
||||||
# Create the projects now, after mocking the settings but before doing the backup
|
# Create the projects now, after mocking the settings but before doing the backup
|
||||||
project_a
|
project_a
|
||||||
|
|
Loading…
Reference in New Issue