[PATCH] scripts/get_maintainer.pl: Add sections in pattern matchdirectory depth order

From: Joe Perches
Date: Mon Aug 03 2009 - 17:24:27 EST


Before this change, matched sections were added in the normally
alphabetic order of MAINTAINERS.

For instance, finding the maintainer for drivers/scsi/wd7000.c
would first find "SCSI SUBSYSTEM", then "WD7000 SCSI SUBSYSTEM",
then "THE REST".

before patch:

$ ./scripts/get_maintainer.pl --nogit -f drivers/scsi/wd7000.c
James E.J. Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
Miroslav Zagorac <zaga@xxxxxxxxxxxxx>
linux-scsi@xxxxxxxxxxxxxxx
linux-kernel@xxxxxxxxxxxxxxx

This patch does a length based directory match depth check by
counting the number of "/" characters in the pattern and adding
1 more if the pattern is not a directory, then selecting the
matched pattern sections by greatest depth.

This changes the example output order of MAINTAINERS to whatever is
selected in "WD7000 SUBSYSTEM", then "SCSI SYSTEM", then "THE REST".

after patch:

$ ./scripts/get_maintainer.pl --nogit -f drivers/scsi/wd7000.c
Miroslav Zagorac <zaga@xxxxxxxxxxxxx>
James E.J. Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
linux-scsi@xxxxxxxxxxxxxxx
linux-kernel@xxxxxxxxxxxxxxx

Signed-off-by: Joe Perches <joe@xxxxxxxxxxx>

diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index 278a45b..e875430 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -13,7 +13,7 @@
use strict;

my $P = $0;
-my $V = '0.17';
+my $V = '0.18';

use Getopt::Long qw(:config no_auto_abbrev);

@@ -201,6 +201,7 @@ foreach my $file (@files) {
if ($type eq 'X') {
if (file_match_pattern($file, $value)) {
$exclude = 1;
+ last;
}
}
}
@@ -208,18 +209,24 @@ foreach my $file (@files) {

if (!$exclude) {
my $tvi = 0;
+ my %hash;
foreach my $line (@typevalue) {
if ($line =~ m/^(\C):\s*(.*)/) {
my $type = $1;
my $value = $2;
if ($type eq 'F') {
if (file_match_pattern($file, $value)) {
- add_categories($tvi);
+ my $pattern_depth = ($value =~ tr@/@@);
+ $pattern_depth++ if (!(substr($value,-1,1) eq "/"));
+ $hash{$tvi} = $pattern_depth;
}
}
}
$tvi++;
}
+ foreach my $line (sort {$hash{$b} <=> $hash{$a}} keys %hash) {
+ add_categories($line);
+ }
}

if ($email && $email_git) {


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/