Fix submodule link to then project under subgroup
Before this change only last namespace in full path was extracted. It's fine unless you have a link to submodule under subgroups. In that case self_url? method returns false and link is processed as external. I could not find a proper regex to cover all cases and correctly extract full path to repository and instead used current instance host name to get correct path to namespace and project. Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
64a22c5628
commit
2eec0b73e8
2 changed files with 19 additions and 0 deletions
|
@ -13,6 +13,17 @@ module SubmoduleHelper
|
|||
|
||||
if url =~ /([^\/:]+)\/([^\/]+(?:\.git)?)\Z/
|
||||
namespace, project = $1, $2
|
||||
gitlab_hosts = [Gitlab.config.gitlab.url,
|
||||
Gitlab.config.gitlab_shell.ssh_path_prefix]
|
||||
|
||||
gitlab_hosts.each do |host|
|
||||
if url.start_with?(host)
|
||||
namespace, _, project = url.sub(host, '').rpartition('/')
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
namespace.sub!(/\A\//, '')
|
||||
project.rstrip!
|
||||
project.sub!(/\.git\z/, '')
|
||||
|
||||
|
|
|
@ -52,6 +52,14 @@ describe SubmoduleHelper do
|
|||
stub_url(['http://', config.host, '/gitlab/root/gitlab-org/gitlab-ce.git'].join(''))
|
||||
expect(submodule_links(submodule_item)).to eq([namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash')])
|
||||
end
|
||||
|
||||
it 'works with subgroups' do
|
||||
allow(Gitlab.config.gitlab).to receive(:port).and_return(80) # set this just to be sure
|
||||
allow(Gitlab.config.gitlab).to receive(:relative_url_root).and_return('/gitlab/root')
|
||||
allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
|
||||
stub_url(['http://', config.host, '/gitlab/root/gitlab-org/sub/gitlab-ce.git'].join(''))
|
||||
expect(submodule_links(submodule_item)).to eq([namespace_project_path('gitlab-org/sub', 'gitlab-ce'), namespace_project_tree_path('gitlab-org/sub', 'gitlab-ce', 'hash')])
|
||||
end
|
||||
end
|
||||
|
||||
context 'submodule on github.com' do
|
||||
|
|
Loading…
Reference in a new issue