Daniel P. Berrangé <[email protected]> writes: > With the GitLab mapping files from the previous commit, the > get_manitainer.pl script is now able to report the gitlab > handle for each maintainer/reviewer when displaying output. > > For example: > > $ ./scripts/get_maintainer.pl -f hw/scsi/lsi53c895a.c > Paolo Bonzini <[email protected]> (supporter:SCSI, gitlab:@bonzini) > Fam Zheng <[email protected]> (reviewer:SCSI, gitlab:@famzheng) > [email protected] (open list:All patches CC here) > > Signed-off-by: Daniel P. Berrangé <[email protected]> > --- > scripts/get_maintainer.pl | 51 ++++++++++++++++++++++++++++++++++++--- > 1 file changed, 47 insertions(+), 4 deletions(-) > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl > index 76be402e11..9679f27413 100755 > --- a/scripts/get_maintainer.pl > +++ b/scripts/get_maintainer.pl > @@ -365,6 +365,31 @@ sub read_mailmap { > close($mailmap_file); > } > > +my %gitlabmap; > + > +read_gitlabmap(".gitlab-map-auto"); > +read_gitlabmap(".gitlab-map-manual"); > + > +sub read_gitlabmap { > + my $mapfile = shift; > + open MAP, "<$mapfile" > + or die "cannot open $mapfile: $!"; > + > + while (<MAP>) { > + next if /^#/; > + next if /^\s*$/; > + > + if (/^(\S+)\t(.*)$/) { > + my $handle = $1; > + my $realname = $2; > + > + $gitlabmap{$realname} = $handle; > + } > + } > + > + close MAP; > +} > + > ## use the filenames on the command line or find the filenames in the > patchfiles > > my @files = (); > @@ -1068,6 +1093,18 @@ sub email_inuse { > return 0; > } > > +sub gitlab_handle { > + my $name = shift; > + > + $name =~ s/"//g; > + > + my $gitlab_handle; > + if (exists $gitlabmap{$name}) { > + return $gitlabmap{$name}; > + } > + return undef; > +} > + > sub push_email_address { > my ($line, $role) = @_; > > @@ -1077,10 +1114,12 @@ sub push_email_address { > return 0; > } > > + my $gitlab_handle = gitlab_handle($name); > + > if (!$email_remove_duplicates) { > - push(@email_to, [format_email($name, $address, $email_usename), $role]); > + push(@email_to, [format_email($name, $address, $email_usename), $role, > $gitlab_handle]); > } elsif (!email_inuse($name, $address)) { > - push(@email_to, [format_email($name, $address, $email_usename), $role]); > + push(@email_to, [format_email($name, $address, $email_usename), $role, > $gitlab_handle]); > $email_hash_name{lc($name)}++ if ($name ne ""); > $email_hash_address{lc($address)}++; > } > @@ -2026,10 +2065,14 @@ sub merge_email { > my %saw; > > for (@_) { > - my ($address, $role) = @$_; > + my ($address, $role, $gitlab_handle) = @$_; > if (!$saw{$address}) { > if ($output_roles) { > - push(@lines, "$address ($role)"); > + if (defined $gitlab_handle) { > + push(@lines, "$address ($role, gitlab:\@$gitlab_handle)"); > + } else { > + push(@lines, "$address ($role)"); > + } > } else { > push(@lines, $address); > }
Reviewed-by: Fabiano Rosas <[email protected]>
