From 2eec0b73e8201761e9c350621651d2949dea52af Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 5 Jun 2017 09:26:20 +0300 Subject: 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 --- app/helpers/submodule_helper.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'app/helpers/submodule_helper.rb') diff --git a/app/helpers/submodule_helper.rb b/app/helpers/submodule_helper.rb index c0763a8a9c4..8e0a1e2ecdf 100644 --- a/app/helpers/submodule_helper.rb +++ b/app/helpers/submodule_helper.rb @@ -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/, '') -- cgit v1.2.1