diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-08-24 07:42:30 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-08-24 07:42:30 +0000 |
commit | 93ad83443a4d3b929e817d0dce174cda9aff3393 (patch) | |
tree | d1f6fb050bc88a503a720a317253547bb7224006 | |
parent | 19dfd9e9d6cf8c260dea6a339b1842fc2399729e (diff) | |
parent | 37904108b965eecabdbe631ca2f3465a3cf18a1e (diff) | |
download | gitlab-ce-93ad83443a4d3b929e817d0dce174cda9aff3393.tar.gz |
Merge branch 'sh-fix-branch-count' into 'master'
Fix inconsistent number of branches when remote branches are present
Closes #36934
See merge request !13784
-rw-r--r-- | lib/gitlab/git/repository.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/git/repository_spec.rb | 30 |
2 files changed, 31 insertions, 1 deletions
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index eb3731ba35a..f5747951d5e 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -153,7 +153,7 @@ module Gitlab if is_enabled gitaly_ref_client.count_branch_names else - rugged.branches.count do |ref| + rugged.branches.each(:local).count do |ref| begin ref.name && ref.target # ensures the branch is valid diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb index 8ec8dfe6acf..2b70d16a264 100644 --- a/spec/lib/gitlab/git/repository_spec.rb +++ b/spec/lib/gitlab/git/repository_spec.rb @@ -977,6 +977,36 @@ describe Gitlab::Git::Repository, seed_helper: true do it 'returns the number of branches' do expect(repository.branch_count).to eq(10) end + + context 'with local and remote branches' do + let(:repository) do + Gitlab::Git::Repository.new('default', File.join(TEST_MUTABLE_REPO_PATH, '.git')) + end + + before do + create_remote_branch(repository, 'joe', 'remote_branch', 'master') + repository.create_branch('local_branch', 'master') + end + + after do + FileUtils.rm_rf(TEST_MUTABLE_REPO_PATH) + ensure_seeds + end + + it 'returns the count of local branches' do + expect(repository.branch_count).to eq(repository.local_branches.count) + end + + context 'with Gitaly disabled' do + before do + allow(Gitlab::GitalyClient).to receive(:feature_enabled?).and_return(false) + end + + it 'returns the count of local branches' do + expect(repository.branch_count).to eq(repository.local_branches.count) + end + end + end end describe "#ls_files" do |