diff options
author | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-02-12 11:18:27 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-02-12 11:18:27 +0100 |
commit | 4007fc7a26642285d82acdd1ce3caecd9ec49cc2 (patch) | |
tree | 5f41a62afc54069eeb42641eec904efc5460f51d /init-repository | |
parent | 1fcdb6cafcf7621fdea84e28a95934a4a04ea1b7 (diff) | |
parent | 37c75a23e8d17893ec9c1bf2a4615ea3876f4204 (diff) |
Merge remote-tracking branch 'origin/5.6.0' into 5.6
Conflicts:
.gitmodules
Change-Id: Ic3c425211f24b0dc3a341cac7d9fd9d0b7edac03
Diffstat (limited to 'init-repository')
-rwxr-xr-x | init-repository | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/init-repository b/init-repository index f0407f63..ae3f0495 100755 --- a/init-repository +++ b/init-repository @@ -71,9 +71,12 @@ Options: --module-subset=<module1>,<module2>... Only initialize the specified subset of modules given as the argument. Specified modules must already exist in .gitmodules. The - string "all" results in cloning all known modules. The default is - the set of maintained modules. Module names may be prefixed with a - dash to exclude them from a bigger set. + string "all" results in cloning all known modules. The strings + "essential", "addon", "preview", "obsolete", and "ignore" refer to + classes of modules; "default" maps to "essential,addon,preview", + which corresponds with the set of maintained modules and is also + the default set. Module names may be prefixed with a dash to + exclude them from a bigger set, e.g. "all,-ignore". --no-update Skip the `git submodule update' command. @@ -234,6 +237,7 @@ sub parse_arguments # Replace any double trailing slashes from end of mirror $self->{'mirror-url'} =~ s{//+$}{/}; + $self->{'module-subset'} =~ s/\bdefault\b/preview,essential,addon/; $self->{'module-subset'} = [ split(/,/, $self->{'module-subset'}) ]; return; @@ -272,6 +276,13 @@ sub git_submodule_init return; } +use constant { + STS_PREVIEW => 1, + STS_ESSENTIAL => 2, + STS_ADDON => 3, + STS_OBSOLETE => 4 +}; + sub git_clone_all_submodules { my ($self, $my_repo_base, $co_branch, @subset) = @_; @@ -296,8 +307,20 @@ sub git_clone_all_submodules $subbases{$mod} = $base; } elsif ($2 eq "update") { push @subset, '-'.$1 if ($3 eq 'none'); - } elsif ($2 eq "initrepo") { - $subinits{$1} = ($3 eq "yes" or $3 eq "true"); + } elsif ($2 eq "status") { + if ($3 eq "preview") { + $subinits{$1} = STS_PREVIEW; + } elsif ($3 eq "essential") { + $subinits{$1} = STS_ESSENTIAL; + } elsif ($3 eq "addon") { + $subinits{$1} = STS_ADDON; + } elsif ($3 eq "obsolete") { + $subinits{$1} = STS_OBSOLETE; + } elsif ($3 eq "ignore") { + delete $subinits{$1}; + } else { + die("Invalid subrepo status '$3' for '$1'.\n"); + } } } @@ -305,11 +328,21 @@ sub git_clone_all_submodules foreach my $mod (@subset) { if ($mod eq "all") { map { $include{$_} = 1; } keys %subbases; - } elsif ($mod eq "default") { - map { $include{$_} = 1; } grep { $subinits{$_} } keys %subbases; + } elsif ($mod eq "essential") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_ESSENTIAL } keys %subbases; + } elsif ($mod eq "addon") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_ADDON } keys %subbases; + } elsif ($mod eq "preview") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_PREVIEW } keys %subbases; + } elsif ($mod eq "obsolete") { + map { $include{$_} = 1; } grep { ($subinits{$_} || 0) eq STS_OBSOLETE } keys %subbases; } elsif ($mod =~ s/^-//) { + print "Warning: excluding non-existent module '$mod'.\n" + if (!defined($subdirs{$mod})); delete $include{$mod}; } else { + die("Error: module subset names non-existent '$mod'.\n") + if (!defined($subdirs{$mod})); $include{$mod} = 1; } } |