Re: [PATCH] get_maintainer.pl: Add optional .get_maintainer.MAINTAINERS override
From: Don Zickus
Date: Fri Jul 06 2018 - 18:30:52 EST
On Fri, Jul 06, 2018 at 03:14:28PM -0700, Joe Perches wrote:
> On Fri, 2018-07-06 at 15:09 -0700, Joe Perches wrote:
> > On Fri, 2018-07-06 at 17:58 -0400, Don Zickus wrote:
> > > We have an internal use case of multiple MAINTAINER files, some folks have
> > > more rights to patches than others so they are not allowed to be cc'd (think
> > > embargoed stuff).
>
> How about:
I think you tried to optimized and it broke my passed in file.
See below.
> ---
> scripts/get_maintainer.pl | 39 +++++++++++++++++++++------------------
> 1 file changed, 21 insertions(+), 18 deletions(-)
>
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index c87fa734e3e1..f7a7d46340a8 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -60,7 +60,7 @@ my $pattern_depth = 0;
> my $self_test = undef;
> my $version = 0;
> my $help = 0;
> -my $find_maintainer_files = 0;
> +my $find_maintainer_files;
>
> my $vcs_used = 0;
>
> @@ -262,7 +262,7 @@ if (!GetOptions(
> 'sections!' => \$sections,
> 'fe|file-emails!' => \$file_emails,
> 'f|file' => \$from_filename,
> - 'find-maintainer-files' => \$find_maintainer_files,
> + 'find-maintainer-files:s' => \$find_maintainer_files,
> 'self-test:s' => \$self_test,
> 'v|version' => \$version,
> 'h|help|usage' => \$help,
> @@ -384,26 +384,29 @@ sub find_ignore_git {
> read_all_maintainer_files();
>
> sub read_all_maintainer_files {
> - if (-d "${lk_path}MAINTAINERS") {
> - opendir(DIR, "${lk_path}MAINTAINERS") or die $!;
> - my @files = readdir(DIR);
> - closedir(DIR);
> - foreach my $file (@files) {
> - push(@mfiles, "${lk_path}MAINTAINERS/$file") if ($file !~ /^\./);
> - }
> - }
> -
> - if ($find_maintainer_files) {
> - find( { wanted => \&find_is_maintainer_file,
> - preprocess => \&find_ignore_git,
> - no_chdir => 1,
> - }, "${lk_path}");
> + my $path = defined $find_maintainer_files && $find_maintainer_files ne ""
> + ? $find_maintainer_files : $lk_path;
> + if (-d "${path}MAINTAINERS") {
> + opendir(DIR, "${path}MAINTAINERS") or die $!;
> + my @files = readdir(DIR);
> + closedir(DIR);
> + foreach my $file (@files) {
> + push(@mfiles, "${path}MAINTAINERS/$file") if ($file !~ /^\./);
> + }
> + }
> +
> + if (defined $find_maintainer_files && (-d $find_maintainer_files)) {
> + find( { wanted => \&find_is_maintainer_file,
> + preprocess => \&find_ignore_git,
> + no_chdir => 1,
> + }, "${path}");
> } else {
> - push(@mfiles, "${lk_path}MAINTAINERS") if -f "${lk_path}MAINTAINERS";
> + push(@mfiles, "${path}MAINTAINERS") if -f "${path}MAINTAINERS";
> }
>
> + die "$P: No MAINTAINER files found in $path\n" if (scalar(@mfiles) == 0);
^^^ I see this 'die' when using --find-maintainer-files=<file>
I suspect the '-d $find_maintainer_files' should be a '-e' but that kinda
breaks your optimization to use the 'else'??
the 'else' fails because it has $path==<file> and the 'else' appends MAINTAINERS
to <file>, which fails the -f check.
You almost need a
} else {
push(@mfiles, "${lk_path}MAINTAINERS") if -f "${lk_path}MAINTAINERS";
+ push(@mfiles, "${path}") if -f "${path}";
}
but that might be kinda kludgy.
Cheers,
Don
> foreach my $file (@mfiles) {
> - read_maintainer_file("$file");
> + read_maintainer_file("$file");
> }
> }
>