get_maintainer.pl: allow "K:" pattern tests to match non-patch text
authorJoe Perches <joe@perches.com>
Tue, 22 Mar 2011 23:34:24 +0000 (16:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Mar 2011 00:44:13 +0000 (17:44 -0700)
Extend the usage of the K section in the MAINTAINERS file to support
matching regular expressions to any arbitrary text that may precede the
patch itself.  For example, the commit message or mail headers generated
by git-format-patch.

Signed-off-by: Joe Perches <joe@perches.com>
Original-patch-by: L. Alberto Giménez <agimenez@sysvalve.es>
Acked-by: L. Alberto Giménez <agimenez@sysvalve.es>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/get_maintainer.pl

index 139e0fff8e3131159d8d16046d2cf9bc72503aaa..d29a8d75cb22ebb37f747f1b0b46d5df24974e58 100755 (executable)
@@ -420,6 +420,14 @@ foreach my $file (@ARGV) {
 
        open(my $patch, "< $file")
            or die "$P: Can't open $file: $!\n";
+
+       # We can check arbitrary information before the patch
+       # like the commit message, mail headers, etc...
+       # This allows us to match arbitrary keywords against any part
+       # of a git format-patch generated file (subject tags, etc...)
+
+       my $patch_prefix = "";                  #Parsing the intro
+
        while (<$patch>) {
            my $patch_line = $_;
            if (m/^\+\+\+\s+(\S+)/) {
@@ -428,13 +436,14 @@ foreach my $file (@ARGV) {
                $filename =~ s@\n@@;
                $lastfile = $filename;
                push(@files, $filename);
+               $patch_prefix = "^[+-].*";      #Now parsing the actual patch
            } elsif (m/^\@\@ -(\d+),(\d+)/) {
                if ($email_git_blame) {
                    push(@range, "$lastfile:$1:$2");
                }
            } elsif ($keywords) {
                foreach my $line (keys %keyword_hash) {
-                   if ($patch_line =~ m/^[+-].*$keyword_hash{$line}/x) {
+                   if ($patch_line =~ m/${patch_prefix}$keyword_hash{$line}/x) {
                        push(@keyword_tvi, $line);
                    }
                }