summaryrefslogtreecommitdiffstats
path: root/init-repository
diff options
context:
space:
mode:
authorMarius Storm-Olsen <marius.storm-olsen@nokia.com>2011-06-01 13:16:09 -0500
committerMarius Storm-Olsen <marius.storm-olsen@nokia.com>2011-06-01 13:16:09 -0500
commitc6f334f7660a9e18393ee0fddd09298c7b19d6dc (patch)
treea8e99a2b18ab7f7ff87067bd9393c04ef54129b0 /init-repository
parentda3eb5c7ec24e306fce5dabb3988243d8462e44a (diff)
Add option --codereview-user <username> to add Gerrit repos
By providing the username used for codereviews, the script will add the proper URLs for the repos currently under Gerrit control. For repos not under Gerrit control, 'gerrit' will simply refer to the staging repo, or origin.
Diffstat (limited to 'init-repository')
-rwxr-xr-xinit-repository72
1 files changed, 54 insertions, 18 deletions
diff --git a/init-repository b/init-repository
index 47371be0..819e042d 100755
--- a/init-repository
+++ b/init-repository
@@ -135,6 +135,14 @@ protocol is blocked by a firewall. Note that this only works with the
external Gitorious server.
+=item --codereview-username <Gerrit/JIRA username>
+
+Adds a gerrit alias to repos under Gerrit codereview management.
+This requires a username for SSH access to the codereview.qt.nokia.com
+server, which will be the same username you have for the bugtracker at
+bugreports.qt.nokia.com.
+
+
=item --alternates <path to other Qt5 repo>
Adds alternates for each submodule to another full qt5 checkout. This makes
@@ -213,6 +221,10 @@ my %STAGING_REPOS = map { $_ => "git://gitorious.org/qt/$_-staging.git" } qw(
qtsensors
);
+my %GERRIT_REPOS = map { $_ => "codereview.qt.nokia.com:qt/$_.git" } qw(
+ qtbase
+);
+
my $BNE_MIRROR_URL_BASE
= 'git://bq-git.apac.nokia.com/qtsoftware/qt/';
@@ -252,6 +264,7 @@ sub parse_arguments
%{$self} = (%{$self},
'alternates' => "",
+ 'codereview-username' => "",
'detach-alternates' => 0 ,
'force' => 0 ,
'ignore-submodules' => 0 ,
@@ -265,6 +278,7 @@ sub parse_arguments
GetOptionsFromArray(\@args,
'alternates=s' => \$self->{qw{ alternates }},
+ 'codereview-username=s' => \$self->{qw{ codereview-username }},
'copy-objects' => \$self->{qw{ detach-alternates }},
'force' => \$self->{qw{ force }},
'ignore-submodules' => \$self->{qw{ ignore-submodules }},
@@ -413,7 +427,7 @@ sub git_clone_all_submodules
return;
}
-sub git_add_staging_remote
+sub git_add_remotes
{
my ($self, $repo_basename) = @_;
@@ -426,23 +440,17 @@ sub git_add_staging_remote
$current_remotes{$line} = 1;
}
- my @staging = grep { /^$repo_basename$/; } keys %STAGING_REPOS;
-
- if (!@staging) {
- # Add origin's URL as staging's URL, since this repo has no separate staging area
- unless ($current_remotes{'staging'}) {
- my @configresult = qx(git remote -v);
- foreach (@configresult) {
- if (/origin\s+(\S+) \(fetch\)/) {
- $self->exe('git', 'remote', 'add', 'staging', $1);
- }
- }
+ my @gerrit = grep { /^$repo_basename$/; } keys %GERRIT_REPOS;
+ if (!$current_remotes{'gerrit'} && $self->{'codereview-username'}) {
+ foreach my $gerrit_repo (@gerrit) {
+ my $gerrit_repo_url = $GERRIT_REPOS{$gerrit_repo};
+ $self->exe('git', 'remote', 'add', 'gerrit', $self->{'codereview-username'}."@".$gerrit_repo_url);
}
- } else {
- foreach my $staging_repo (@staging) {
- # nothing to do if remote already exists
- next if ($current_remotes{'staging'});
+ }
+ my @staging = grep { /^$repo_basename$/; } keys %STAGING_REPOS;
+ if (!$current_remotes{'staging'}) {
+ foreach my $staging_repo (@staging) {
my $staging_repo_url = $STAGING_REPOS{$staging_repo};
if ($protocol) {
if ($protocol ne 'http') {
@@ -454,6 +462,34 @@ sub git_add_staging_remote
}
}
+ # if repo has no staging repo defined, alias it to gerrit or origin
+ if (!$current_remotes{'staging'} && !@staging) {
+ my @configresult = qx(git remote -v);
+ my $staging_set = 0;
+ foreach (@configresult) {
+ if (/^gerrit\s+(\S+) \(fetch\)/) {
+ $self->exe('git', 'remote', 'add', 'staging', $1);
+ $staging_set = 1;
+ }
+ }
+ unless($staging_set) {
+ foreach (@configresult) {
+ if (/^origin\s+(\S+) \(fetch\)/) {
+ $self->exe('git', 'remote', 'add', 'staging', $1);
+ }
+ }
+ }
+ }
+ #if repo has no gerrit repo defined, alias it to whatever staging now points to (could be origin)
+ if (!$current_remotes{'gerrit'} && !@gerrit) {
+ my @configresult = qx(git remote -v);
+ foreach (@configresult) {
+ if (/^staging\s+(\S+) \(fetch\)/) {
+ $self->exe('git', 'remote', 'add', 'gerrit', $1);
+ }
+ }
+ }
+
return;
}
@@ -515,7 +551,7 @@ sub git_clone_one_submodule
$self->exe('git', 'remote', 'add', 'mirror', $mirror);
}
- $self->git_add_staging_remote($submodule);
+ $self->git_add_remotes($submodule);
if ($self->{'detach-alternates'}) {
$self->exe('git', 'repack', '-a');
@@ -546,7 +582,7 @@ sub run
$self->git_clone_all_submodules;
}
- $self->git_add_staging_remote('qt5');
+ $self->git_add_remotes('qt5');
return;
}