From 3fb55652b9f754990e286723f209ce3c07c96d69 Mon Sep 17 00:00:00 2001 From: Joe Perches Date: Mon, 21 Sep 2009 17:04:17 -0700 Subject: [PATCH] scripts/get_maintainer.pl: add --pattern-depth --pattern-depth is used to control how many levels of directory traversal should be performed to find maintainers. default is 0 (all directory levels). For instance: MAINTAINERS currently has multiple M: and F: entries that match net/netfilter/ipvs/ip_vs_app.c IPVS M: Wensong Zhang M: Simon Horman M: Julian Anastasov [...] F: net/netfilter/ipvs/ NETFILTER/IPTABLES/IPCHAINS [...] M: Patrick McHardy [...] F: net/netfilter/ NETWORKING [GENERAL] M: "David S. Miller" [...] F: net/ THE REST M: Linus Torvalds [...] F: */ Using this command will return all of those maintainers: (except Linus unless --git-chief-maintainers is specified) $ ./scripts/get_maintainer.pl --nogit -nol \ -f net/netfilter/ipvs/ip_vs_app.c Julian Anastasov Simon Horman Wensong Zhang Patrick McHardy David S. Miller Adding --pattern-depth=1 will match at the deepest level $ ./scripts/get_maintainer.pl --nogit -nol --pattern-depth=1 \ -f net/netfilter/ipvs/ip_vs_app.c Julian Anastasov Simon Horman Wensong Zhang Adding --pattern-depth=2 will match at the deepest level and 1 higher $ ./scripts/get_maintainer.pl --nogit -nol --pattern-depth=2 \ -f net/netfilter/ipvs/ip_vs_app.c Julian Anastasov Simon Horman Wensong Zhang Patrick McHardy and so on. Signed-off-by: Joe Perches Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- scripts/get_maintainer.pl | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl index fb446e0f8bbf..5132949500c1 100755 --- a/scripts/get_maintainer.pl +++ b/scripts/get_maintainer.pl @@ -13,7 +13,7 @@ use strict; my $P = $0; -my $V = '0.18beta2'; +my $V = '0.19'; use Getopt::Long qw(:config no_auto_abbrev); @@ -37,6 +37,7 @@ my $web = 0; my $subsystem = 0; my $status = 0; my $from_filename = 0; +my $pattern_depth = 0; my $version = 0; my $help = 0; @@ -80,6 +81,7 @@ if (!GetOptions( 'status!' => \$status, 'scm!' => \$scm, 'web!' => \$web, + 'pattern-depth=i' => \$pattern_depth, 'f|file' => \$from_filename, 'v|version' => \$version, 'h|help' => \$help, @@ -226,9 +228,13 @@ foreach my $file (@files) { my $value = $2; if ($type eq 'F') { if (file_match_pattern($file, $value)) { - my $pattern_depth = ($value =~ tr@/@@); - $pattern_depth++ if (!(substr($value,-1,1) eq "/")); - $hash{$tvi} = $pattern_depth; + my $value_pd = ($value =~ tr@/@@); + my $file_pd = ($file =~ tr@/@@); + $value_pd++ if (substr($value,-1,1) ne "/"); + if ($pattern_depth == 0 || + (($file_pd - $value_pd) < $pattern_depth)) { + $hash{$tvi} = $value_pd; + } } } } @@ -345,13 +351,14 @@ Output type options: --separator [, ] => separator for multiple entries on 1 line --multiline => print 1 entry per line -Default options: - [--email --git --m --n --l --multiline] - Other options: + --pattern-depth => Number of pattern directory traversals (default: 0 (all)) --version => show version --help => show this help information +Default options: + [--email --git --m --n --l --multiline --pattern-depth=0] + Notes: Using "-f directory" may give unexpected results: Used with "--git", git signators for _all_ files in and below -- GitLab