summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2019-04-11 07:45:48 +0000
committerGitLab Release Tools Bot <robert+release-tools@gitlab.com>2019-04-12 10:26:10 +0000
commitc63eb08e3c8a0f48468dec351cb100ba3c68fa94 (patch)
tree28bce31ef4b8ddc40c5fcd6b90c37ee610155275
parent5c46af40687ae7529c33211464724f909051eb05 (diff)
downloadgitlab-ce-c63eb08e3c8a0f48468dec351cb100ba3c68fa94.tar.gz
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
-rw-r--r--changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml5
-rw-r--r--lib/gitlab/git/repository.rb2
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb7
3 files changed, 13 insertions, 1 deletions
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