summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-02-15 11:13:24 +0000
committerMark Fletcher <mark@gitlab.com>2018-02-15 11:43:41 +0000
commit424684554758a24914098b20300d5908235d7949 (patch)
tree65e04099e84ee8b39735e82350858bb2cac0c693
parent7a7e6a26d2e07a9cedb730b6f2ad0a4e8332d33a (diff)
downloadgitlab-ce-10-5-stable-prepare-rc7.tar.gz
Merge branch 'sh-fix-error-500-licensee' into 'master'10-5-stable-prepare-rc7
Fix Error 500s loading repositories with inconsistent HEAD Closes #43268 See merge request gitlab-org/gitlab-ce!17128
-rw-r--r--app/models/repository.rb10
-rw-r--r--spec/models/repository_spec.rb12
2 files changed, 21 insertions, 1 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 1cf55fd4332..4f754b11da4 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -593,7 +593,15 @@ class Repository
def license_key
return unless exists?
- Licensee.license(path).try(:key)
+ # The licensee gem creates a Rugged object from the path:
+ # https://github.com/benbalter/licensee/blob/v8.7.0/lib/licensee/projects/git_project.rb
+ begin
+ Licensee.license(path).try(:key)
+ # Normally we would rescue Rugged::Error, but that is banned by lint-rugged
+ # and we need to migrate this endpoint to Gitaly:
+ # https://gitlab.com/gitlab-org/gitaly/issues/1026
+ rescue
+ end
end
cache_method :license_key
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index a6d48e369ac..0bc07dc7a85 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -873,6 +873,18 @@ describe Repository do
expect(repository.license_key).to be_nil
end
+ it 'returns nil when the commit SHA does not exist' do
+ allow(repository.head_commit).to receive(:sha).and_return('1' * 40)
+
+ expect(repository.license_key).to be_nil
+ end
+
+ it 'returns nil when master does not exist' do
+ repository.rm_branch(user, 'master')
+
+ expect(repository.license_key).to be_nil
+ end
+
it 'returns the license key' do
repository.create_file(user, 'LICENSE',
Licensee::License.new('mit').content,