diff options
author | Kai Köhne <kai.koehne@qt.io> | 2021-05-19 16:40:28 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@qt.io> | 2021-05-27 06:32:24 +0000 |
commit | 7374ef8e38b6b47589ff4f2977f102fc63ab3d72 (patch) | |
tree | bb9a484a898098b49a0f9bb000e95d820f971585 /init-repository | |
parent | 7cda9fd97b44244a6fc2c35f9f0b47fa6c53649a (diff) |
Support absolute submodule urls
This is needed for qttools.
Fixes: QTBUG-93850
Change-Id: I59a7f8a56d8d7143521b67d0c385150e62338209
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'init-repository')
-rwxr-xr-x | init-repository | 17 |
1 files 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; |