aboutsummaryrefslogtreecommitdiffstats
path: root/init-repository
diff options
context:
space:
mode:
authorKai Köhne <kai.koehne@qt.io>2021-05-19 16:40:28 +0200
committerKai Koehne <kai.koehne@qt.io>2021-05-27 06:32:24 +0000
commit7374ef8e38b6b47589ff4f2977f102fc63ab3d72 (patch)
treebb9a484a898098b49a0f9bb000e95d820f971585 /init-repository
parent7cda9fd97b44244a6fc2c35f9f0b47fa6c53649a (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-xinit-repository17
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;