[PATCH] get_maintainer: Add email addresses from .yaml files

Sam Ravnborg sam at ravnborg.org
Mon Apr 27 05:57:55 UTC 2020


Hi Joe.

On Sun, Apr 26, 2020 at 10:40:52PM -0700, Joe Perches wrote:
> .yaml files can contain maintainer/author addresses and it seems
> unlikely or unnecessary that individual MAINTAINER file section
> entries for each .yaml file will be created.
> 
> So dd the email addresses found in .yaml files to the default
     ^
     add

> get_maintainer output.
> 
> The email addresses are marked with "(in file)" when using the
> "--roles" or "--rolestats" options.
> 
> Miscellanea:
> 
> o Change $file_emails to $email_file_emails to avoid visual
>   naming conflicts with @file_emails
> 
> Signed-off-by: Joe Perches <joe at perches.com>
Acked-by: Sam Ravnborg <sam at ravnborg.org>
Tested-by: Sam Ravnborg <sam at ravnborg.org>

The patch did not apply on top of -rc3, but it was trivial to fix.
Tested and works like a charm.
Thanks for doing this!

	Sam

> ---
>  scripts/get_maintainer.pl | 44 +++++++++++++++++++++++++++++---------------
>  1 file changed, 29 insertions(+), 15 deletions(-)
> 
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index 6cbcd1..6d973f 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -57,7 +57,7 @@ my $status = 0;
>  my $letters = "";
>  my $keywords = 1;
>  my $sections = 0;
> -my $file_emails = 0;
> +my $email_file_emails = 0;
>  my $from_filename = 0;
>  my $pattern_depth = 0;
>  my $self_test = undef;
> @@ -69,6 +69,12 @@ my $vcs_used = 0;
>  
>  my $exit = 0;
>  
> +my @files = ();
> +my @fixes = ();			# If a patch description includes Fixes: lines
> +my @range = ();
> +my @keyword_tvi = ();
> +my @file_emails = ();
> +
>  my %commit_author_hash;
>  my %commit_signer_hash;
>  
> @@ -266,7 +272,7 @@ if (!GetOptions(
>  		'pattern-depth=i' => \$pattern_depth,
>  		'k|keywords!' => \$keywords,
>  		'sections!' => \$sections,
> -		'fe|file-emails!' => \$file_emails,
> +		'fe|file-emails!' => \$email_file_emails,
>  		'f|file' => \$from_filename,
>  		'find-maintainer-files' => \$find_maintainer_files,
>  		'mpath|maintainer-path=s' => \$maintainer_path,
> @@ -424,6 +430,22 @@ sub read_all_maintainer_files {
>      }
>  }
>  
> +sub maintainers_in_file {
> +    my ($file) = @_;
> +
> +    return if ($file =~ m@\bMAINTAINERS$@);
> +
> +    if (-f $file && ($email_file_emails || $file =~ /\.yaml$/)) {
> +	open(my $f, '<', $file)
> +	    or die "$P: Can't open $file: $!\n";
> +	my $text = do { local($/) ; <$f> };
> +	close($f);
> +
> +	my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g;
> +	push(@file_emails, clean_file_emails(@poss_addr));
> +    }
> +}
> +
>  #
>  # Read mail address map
>  #
> @@ -504,12 +526,6 @@ sub read_mailmap {
>  
>  ## use the filenames on the command line or find the filenames in the patchfiles
>  
> -my @files = ();
> -my @fixes = ();			# If a patch description includes Fixes: lines
> -my @range = ();
> -my @keyword_tvi = ();
> -my @file_emails = ();
> -
>  if (!@ARGV) {
>      push(@ARGV, "&STDIN");
>  }
> @@ -527,7 +543,7 @@ foreach my $file (@ARGV) {
>  	$file =~ s/^\Q${cur_path}\E//;	#strip any absolute path
>  	$file =~ s/^\Q${lk_path}\E//;	#or the path to the lk tree
>  	push(@files, $file);
> -	if ($file ne "MAINTAINERS" && -f $file && ($keywords || $file_emails)) {
> +	if ($file ne "MAINTAINERS" && -f $file && $keywords) {
>  	    open(my $f, '<', $file)
>  		or die "$P: Can't open $file: $!\n";
>  	    my $text = do { local($/) ; <$f> };
> @@ -539,10 +555,6 @@ foreach my $file (@ARGV) {
>  		    }
>  		}
>  	    }
> -	    if ($file_emails) {
> -		my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g;
> -		push(@file_emails, clean_file_emails(@poss_addr));
> -	    }
>  	}
>      } else {
>  	my $file_cnt = @files;
> @@ -923,6 +935,8 @@ sub get_maintainers {
>  		print("\n");
>  	    }
>  	}
> +
> +	maintainers_in_file($file);
>      }
>  
>      if ($keywords) {
> @@ -1835,7 +1849,7 @@ tm toggle maintainers
>  tg toggle git entries
>  tl toggle open list entries
>  ts toggle subscriber list entries
> -f  emails in file       [$file_emails]
> +f  emails in file       [$email_file_emails]
>  k  keywords in file     [$keywords]
>  r  remove duplicates    [$email_remove_duplicates]
>  p# pattern match depth  [$pattern_depth]
> @@ -1960,7 +1974,7 @@ EOT
>  		bool_invert(\$email_git_all_signature_types);
>  		$rerun = 1;
>  	    } elsif ($sel eq "f") {
> -		bool_invert(\$file_emails);
> +		bool_invert(\$email_file_emails);
>  		$rerun = 1;
>  	    } elsif ($sel eq "r") {
>  		bool_invert(\$email_remove_duplicates);
> 


More information about the dri-devel mailing list