From 7374ef8e38b6b47589ff4f2977f102fc63ab3d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20K=C3=B6hne?= Date: Wed, 19 May 2021 16:40:28 +0200 Subject: [PATCH] Support absolute submodule urls This is needed for qttools. Fixes: QTBUG-93850 Change-Id: I59a7f8a56d8d7143521b67d0c385150e62338209 Reviewed-by: Paul Wicking Reviewed-by: Joerg Bornemann Reviewed-by: Qt CI Bot --- init-repository | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/init-repository b/init-repository index 2bef9979..0d5593b4 100755 --- a/init-repository +++ b/init-repository @@ -301,6 +301,12 @@ use constant { STS_ADDITIONAL => 6 }; +sub has_url_scheme +{ + my ($url) = @_; + return $url =~ "^[a-z][a-z0-9+\-.]*://"; +} + sub git_clone_all_submodules { my ($self, $my_repo_base, $co_branch, $alternates, @subset) = @_; @@ -319,8 +325,9 @@ sub git_clone_all_submodules $subbranches{$1} = $3; } elsif ($2 eq "url") { my ($mod, $base) = ($1, $3); - next if ($base !~ /^\.\.\//); - $base = $my_repo_base.'/'.$base; + if (!has_url_scheme($base)) { + $base = $my_repo_base.'/'.$base; + } while ($base =~ s,(?!\.\./)[^/]+/\.\./,,g) {} $subbases{$mod} = $base; } elsif ($2 eq "update") { @@ -519,7 +526,11 @@ sub git_clone_one_submodule my $do_clone = (! -e "$submodule/.git"); - my $url = $self->{'base-url'}.$repo_basename; + my $url = $repo_basename; + if (!has_url_scheme($url)) { + $url = $self->{'base-url'}.$url; + } + my $mirror; if ($mirror_url && ($do_clone || $self->{fetch})) { $mirror = $mirror_url.$repo_basename;