Merge branch 'submodules-no-dotgit' into 'master'
submodule_links: handle urls that don't end with .git See merge request !10799
This commit is contained in:
commit
1005389f70
|
@ -5,7 +5,7 @@ module SubmoduleHelper
|
||||||
def submodule_links(submodule_item, ref = nil, repository = @repository)
|
def submodule_links(submodule_item, ref = nil, repository = @repository)
|
||||||
url = repository.submodule_url_for(ref, submodule_item.path)
|
url = repository.submodule_url_for(ref, submodule_item.path)
|
||||||
|
|
||||||
return url, nil unless url =~ /([^\/:]+)\/([^\/]+\.git)\Z/
|
return url, nil unless url =~ /([^\/:]+)\/([^\/]+(?:\.git)?)\Z/
|
||||||
|
|
||||||
namespace = $1
|
namespace = $1
|
||||||
project = $2
|
project = $2
|
||||||
|
@ -37,14 +37,16 @@ module SubmoduleHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def self_url?(url, namespace, project)
|
def self_url?(url, namespace, project)
|
||||||
return true if url == [Gitlab.config.gitlab.url, '/', namespace, '/',
|
url_no_dotgit = url.chomp('.git')
|
||||||
project, '.git'].join('')
|
return true if url_no_dotgit == [Gitlab.config.gitlab.url, '/', namespace, '/',
|
||||||
url == gitlab_shell.url_to_repo([namespace, '/', project].join(''))
|
project].join('')
|
||||||
|
url_with_dotgit = url_no_dotgit + '.git'
|
||||||
|
url_with_dotgit == gitlab_shell.url_to_repo([namespace, '/', project].join(''))
|
||||||
end
|
end
|
||||||
|
|
||||||
def relative_self_url?(url)
|
def relative_self_url?(url)
|
||||||
# (./)?(../repo.git) || (./)?(../../project/repo.git) )
|
# (./)?(../repo.git) || (./)?(../../project/repo.git) )
|
||||||
url =~ /\A((\.\/)?(\.\.\/))(?!(\.\.)|(.*\/)).*\.git\z/ || url =~ /\A((\.\/)?(\.\.\/){2})(?!(\.\.))([^\/]*)\/(?!(\.\.)|(.*\/)).*\.git\z/
|
url =~ /\A((\.\/)?(\.\.\/))(?!(\.\.)|(.*\/)).*(\.git)?\z/ || url =~ /\A((\.\/)?(\.\.\/){2})(?!(\.\.))([^\/]*)\/(?!(\.\.)|(.*\/)).*(\.git)?\z/
|
||||||
end
|
end
|
||||||
|
|
||||||
def standard_links(host, namespace, project, commit)
|
def standard_links(host, namespace, project, commit)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: 'repository browser: handle submodule urls that don''t end with .git'
|
||||||
|
merge_request:
|
||||||
|
author: David Turner
|
|
@ -70,10 +70,12 @@ describe SubmoduleHelper do
|
||||||
expect(submodule_links(submodule_item)).to eq(['https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash'])
|
expect(submodule_links(submodule_item)).to eq(['https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash'])
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns original with non-standard url' do
|
it 'handles urls with no .git on the end' do
|
||||||
stub_url('http://github.com/gitlab-org/gitlab-ce')
|
stub_url('http://github.com/gitlab-org/gitlab-ce')
|
||||||
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
expect(submodule_links(submodule_item)).to eq(['https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash'])
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns original with non-standard url' do
|
||||||
stub_url('http://github.com/another/gitlab-org/gitlab-ce.git')
|
stub_url('http://github.com/another/gitlab-org/gitlab-ce.git')
|
||||||
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
||||||
end
|
end
|
||||||
|
@ -95,10 +97,12 @@ describe SubmoduleHelper do
|
||||||
expect(submodule_links(submodule_item)).to eq(['https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash'])
|
expect(submodule_links(submodule_item)).to eq(['https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash'])
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns original with non-standard url' do
|
it 'handles urls with no .git on the end' do
|
||||||
stub_url('http://gitlab.com/gitlab-org/gitlab-ce')
|
stub_url('http://gitlab.com/gitlab-org/gitlab-ce')
|
||||||
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
expect(submodule_links(submodule_item)).to eq(['https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash'])
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns original with non-standard url' do
|
||||||
stub_url('http://gitlab.com/another/gitlab-org/gitlab-ce.git')
|
stub_url('http://gitlab.com/another/gitlab-org/gitlab-ce.git')
|
||||||
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
expect(submodule_links(submodule_item)).to eq([repo.submodule_url_for, nil])
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue