From 435a7c7739eed93acd783a7bca2755668f4e1d28 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Wed, 6 Jul 2011 17:53:58 +1000 Subject: Can now tell init-repository to only use a subset of modules Still useful to use init-repository because of all the other logic, such as repository urls. More general than --no-webkit, although it is still a valid convenience as the most common case. Also makes qt.pro check for existence of modules, since it is no longer certain that you'll have everything but webkit. Change-Id: Iaaaa30e24e0a793218e2e307bdde56067760c513 Reviewed-on: http://codereview.qt.nokia.com/1258 Reviewed-by: Qt Sanity Bot Reviewed-by: Rohan McGovern --- init-repository | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'init-repository') diff --git a/init-repository b/init-repository index e80dcc0c..abb2b93c 100755 --- a/init-repository +++ b/init-repository @@ -87,6 +87,10 @@ Skip webkit and webkit examples submodules. It may be desirable to skip these modules due to the large size of the webkit git repository. +=item --module-subset=,... + +Only initialize the specified subset of modules given as the argument. Specified +modules must already exist in .gitmodules. =item --no-update @@ -300,6 +304,7 @@ sub parse_arguments 'protocol' => "", 'update' => 1 , 'webkit' => 1 , + 'module-subset' => "", ); GetOptionsFromArray(\@args, @@ -314,6 +319,7 @@ sub parse_arguments 'quiet' => \$self->{qw{ quiet }}, 'update!' => \$self->{qw{ update }}, 'webkit!' => \$self->{qw{ webkit }}, + 'module-subset=s' => \$self->{qw{ module-subset }}, 'help|?' => sub { pod2usage(1); }, 'http' => sub { $self->{protocol} = 'http'; }, @@ -349,6 +355,12 @@ sub parse_arguments # Replace any double trailing slashes from end of mirror $self->{'mirror-url'} =~ s{//+$}{/}; + if ($self->{'module-subset'}) { + $self->{'module-subset'} = { + map { $_ => 1 } split(qr{,}, $self->{'module-subset'}) + }; + } + return; } @@ -405,6 +417,21 @@ sub git_disable_webkit_submodule return; } +sub git_prune_submodules +{ + my ($self) = @_; + + my @configresult = qx(git config -l); + foreach my $line (@configresult) { + if ($line =~ /submodule\.([^.=]+)\.url=/) { + my $module_name = $1; + if (!$self->{'module-subset'}{$module_name}) { + $self->exe('git', 'config', '--remove', "submodule.$module_name"); + } + } + } +} + sub git_set_submodule_config { my ($self) = @_; @@ -593,6 +620,10 @@ sub run $self->git_disable_webkit_submodule; } + if ($self->{'module-subset'}) { + $self->git_prune_submodules; + } + $self->git_set_submodule_config; if ($self->{update}) { -- cgit v1.2.3