From c63eb08e3c8a0f48468dec351cb100ba3c68fa94 Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Thu, 11 Apr 2019 07:45:48 +0000 Subject: [PATCH] Merge branch 'jc-guard-against-empty-dereferenced_target' into 'master' Guard against nil dereferenced_target Closes #60076 See merge request gitlab-org/gitlab-ce!27192 (cherry picked from commit dd019c2e0b6e292fb55ed264c430eec4a13c0c6b) 674b926e Guard against nil dereferenced_target --- .../jc-guard-against-empty-dereferenced_target.yml | 5 +++++ lib/gitlab/git/repository.rb | 2 +- spec/lib/gitlab/git/repository_spec.rb | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml diff --git a/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml b/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml new file mode 100644 index 00000000000..94e5b4a81b7 --- /dev/null +++ b/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml @@ -0,0 +1,5 @@ +--- +title: Guard against nil dereferenced_target +merge_request: 27192 +author: +type: fixed diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index 7d6851a4b8d..be9e926728c 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -465,7 +465,7 @@ module Gitlab @refs_hash = Hash.new { |h, k| h[k] = [] } (tags + branches).each do |ref| - next unless ref.target && ref.name + next unless ref.target && ref.name && ref.dereferenced_target&.id @refs_hash[ref.dereferenced_target.id] << ref.name end diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb index 63345a56e42..088f8acf554 100644 --- a/spec/lib/gitlab/git/repository_spec.rb +++ b/spec/lib/gitlab/git/repository_spec.rb @@ -522,6 +522,13 @@ describe Gitlab::Git::Repository, :seed_helper do it 'has valid commit ids as keys' do expect(subject.keys).to all( match(Commit::COMMIT_SHA_PATTERN) ) end + + it 'does not error when dereferenced_target is nil' do + blob_id = repository.blob_at('master', 'README.md').id + repository_rugged.tags.create("refs/tags/blob-tag", blob_id) + + expect { subject }.not_to raise_error + end end describe '#fetch_repository_as_mirror' do -- GitLab