Skip to content
Snippets Groups Projects
Commit dec6b31c authored by Stan Hu's avatar Stan Hu
Browse files

Fix Error 500 when attempting to retrieve project license when HEAD points to non-existent ref

Closes #17537
parent c3f68b10
No related branches found
No related tags found
1 merge request!4151Fix Error 500 when attempting to retrieve project license when HEAD points to non-existent ref
Loading
Loading
@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.8.0 (unreleased)
- Snippets tab under user profile. !4001 (Long Nguyen)
- Fix error when using link to uploads in global snippets
- Fix Error 500 when attempting to retrieve project license when HEAD points to non-existent ref
- Assign labels and milestone to target project when moving issue. !3934 (Long Nguyen)
- Use a case-insensitive comparison in sanitizing URI schemes
- Project#open_branches has been cleaned up and no longer loads entire records into memory.
Loading
Loading
Loading
Loading
@@ -475,7 +475,7 @@ class Repository
end
 
def license_blob
return nil if !exists? || empty?
return nil unless head_exists?
 
cache.fetch(:license_blob) do
tree(:head).blobs.find do |file|
Loading
Loading
@@ -485,7 +485,7 @@ class Repository
end
 
def license_key
return nil if !exists? || empty?
return nil unless head_exists?
 
cache.fetch(:license_key) do
Licensee.license(path).try(:key)
Loading
Loading
@@ -493,7 +493,7 @@ class Repository
end
 
def gitlab_ci_yml
return nil if !exists? || empty?
return nil unless head_exists?
 
@gitlab_ci_yml ||= tree(:head).blobs.find do |file|
file.name == '.gitlab-ci.yml'
Loading
Loading
@@ -961,7 +961,7 @@ class Repository
end
 
def main_language
return if empty? || rugged.head_unborn?
return unless head_exists?
 
Linguist::Repository.new(rugged, rugged.head.target_id).language
end
Loading
Loading
@@ -981,4 +981,8 @@ class Repository
def cache
@cache ||= RepositoryCache.new(path_with_namespace)
end
def head_exists?
exists? && !empty? && !rugged.head_unborn?
end
end
Loading
Loading
@@ -176,6 +176,15 @@ describe Repository, models: true do
repository.remove_file(user, 'LICENSE', 'Remove LICENSE', 'master')
end
 
it 'handles when HEAD points to non-existent ref' do
repository.commit_file(user, 'LICENSE', 'Copyright!', 'Add LICENSE', 'master', false)
rugged = double('rugged')
expect(rugged).to receive(:head_unborn?).and_return(true)
expect(repository).to receive(:rugged).and_return(rugged)
expect(repository.license_blob).to be_nil
end
it 'looks in the root_ref only' do
repository.remove_file(user, 'LICENSE', 'Remove LICENSE', 'markdown')
repository.commit_file(user, 'LICENSE', Licensee::License.new('mit').content, 'Add LICENSE', 'markdown', false)
Loading
Loading
@@ -204,6 +213,15 @@ describe Repository, models: true do
repository.remove_file(user, 'LICENSE', 'Remove LICENSE', 'master')
end
 
it 'handles when HEAD points to non-existent ref' do
repository.commit_file(user, 'LICENSE', 'Copyright!', 'Add LICENSE', 'master', false)
rugged = double('rugged')
expect(rugged).to receive(:head_unborn?).and_return(true)
expect(repository).to receive(:rugged).and_return(rugged)
expect(repository.license_key).to be_nil
end
it 'returns nil when no license is detected' do
expect(repository.license_key).to be_nil
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment