07 Mar, 2010

7 commits

  • If MAINTAINERS section entries are misformatted, it was possible to have
    an infinite loop.

    Correct the defect by always moving the index to the end of section + 1

    Also, exit check for exclude as soon as possible.

    Signed-off-by: Joe Perches
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Picky mail systems won't accept email addresses where recipient has period
    in name; ie. David S. Miller will not work.

    Signed-off-by: Stephen Hemminger
    Acked-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Hemminger
     
  • perlcritic is a standard checker for Perl Best Practices. This patch
    fixes most of the warnings in the get_maintainer script. If kernel
    programmers are going to have checkpatch they should write clean scripts
    as well...

    Bareword file handle opened at line 176, column 1. See pages 202,204 of PBP. (Severity: 5)
    Two-argument "open" used at line 176, column 1. See page 207 of PBP. (Severity: 5)
    Bareword file handle opened at line 207, column 5. See pages 202,204 of PBP. (Severity: 5)
    Two-argument "open" used at line 207, column 5. See page 207 of PBP. (Severity: 5)
    Bareword file handle opened at line 246, column 6. See pages 202,204 of PBP. (Severity: 5)
    Two-argument "open" used at line 246, column 6. See page 207 of PBP. (Severity: 5)
    Bareword file handle opened at line 258, column 2. See pages 202,204 of PBP. (Severity: 5)
    Two-argument "open" used at line 258, column 2. See page 207 of PBP. (Severity: 5)
    Expression form of "eval" at line 983, column 17. See page 161 of PBP. (Severity: 5)
    Expression form of "eval" at line 985, column 17. See page 161 of PBP. (Severity: 5)
    Subroutine prototypes used at line 1186, column 1. See page 194 of PBP. (Severity: 5)
    Subroutine prototypes used at line 1206, column 1. See page 194 of PBP. (Severity: 5)

    Signed-off-by: Stephen Hemminger
    Acked-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Hemminger
     
  • Doesn't need or accept '-' as a trailing option to read stdin. Doesn't
    print usage() after bad options. Adds --usage as command line equivalent
    of --help

    Suggested-by: Borislav Petkov
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Signed-off-by: Joe Perches
    Cc: Stefan Richter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Print the complete contents of the matched subsystems
    in pattern match depth order.

    Sample output:

    $ ./scripts/get_maintainer.pl --sections -f drivers/net/usb/smsc95xx.c
    USB SMSC95XX ETHERNET DRIVER
    M:Steve Glendinning
    L:netdev@vger.kernel.org
    S:Supported
    F:drivers/net/usb/smsc95xx.*
    USB SUBSYSTEM
    M:Greg Kroah-Hartman
    L:linux-usb@vger.kernel.org
    W:http://www.linux-usb.org
    T:quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
    S:Supported
    F:Documentation/usb/
    F:drivers/net/usb/
    F:drivers/usb/
    F:include/linux/usb.h
    F:include/linux/usb/
    NETWORKING DRIVERS
    L:netdev@vger.kernel.org
    W:http://www.linuxfoundation.org/en/Net
    T:git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
    S:Odd Fixes
    F:drivers/net/
    F:include/linux/if_*
    F:include/linux/*device.h
    THE REST
    M:Linus Torvalds
    L:linux-kernel@vger.kernel.org
    Q:http://patchwork.kernel.org/project/LKML/list/
    T:git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
    S:Buried alive in reporters
    F:*
    F:*/

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Add an imperfect option to search a source file for email addresses.

    New option: --file-emails or --fe

    email addresses in files are freeform text and are nearly impossible to
    parse. Still, might as well try to do a somewhat acceptable job of
    finding them. This code should find all addresses that are in the form
    addr@domain.tld

    The code assumes that up to 3 alphabetic words along with dashes, commas,
    and periods that preceed the email address are a name.

    If 3 words are found for the name, and one of the first two words are a
    single letter and period, or just a single letter then the 3 words are use
    as name otherwise the last 2 words are used.

    Some variants that are shown correctly:
    John Smith
    Random J. Developer
    Random J. Developer (rjd@tld.com)
    J. Random Developer rjd@tld.com

    Variants that are shown nominally correctly:
    Written by First Last (funny-addr@somecompany.com)
    is shown as:
    First Last

    Variants that are shown incorrectly:
    Some Really Long Name
    MontaVista Software, Inc.
    are returned as:
    Long Name
    "Software, Inc"

    --roles and --rolestats show "(in file)" for matches.

    For instance:

    Without -file-emails:

    $ ./scripts/get_maintainer.pl -f -nogit -roles net/core/netpoll.c
    David S. Miller (maintainer:NETWORKING [GENERAL])
    linux-kernel@vger.kernel.org (open list)

    With -fe:

    $ ./scripts/get_maintainer.pl -f -fe -nogit -roles net/core/netpoll.c
    David S. Miller (maintainer:NETWORKING [GENERAL])
    Matt Mackall (in file)
    Ingo Molnar (in file)
    linux-kernel@vger.kernel.org (open list)
    netdev@vger.kernel.org (open list:NETWORKING [GENERAL])

    The number of email addresses in the file in not limited. Neither is the
    number of returned email addresses.

    Signed-off-by: Joe Perches
    Cc: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

03 Feb, 2010

1 commit

  • When git has been set to always use color in .gitconfig then I get the
    warning message

    Bad divisor in main::vcs_assign: 0

    This is caused by vcs_file_signoffs not matching any commits due to the
    pattern not understand the colour codes. Fix this by telling git log to
    never use colour.

    Signed-off-by: Richard Kennedy
    Acked-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Kennedy
     

12 Jan, 2010

1 commit

  • The following command doesn't generate any output.
    `./scripts/get_maintainer.pl --no-git -f drivers/net/wireless/wl12xx/wl1271_acx.c`

    An excluded "X:" pattern match in any section would cause a file not to
    match any other section.

    Signed-off-by: Joe Perches
    Reported-by: Dan Carpenter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

16 Dec, 2009

3 commits

  • Restructure a bit for multiple version control systems support.

    Use a hash for each supported VCS that contains the commands
    and patterns used to find commits, logs, and signers.

    --git command line options are still used for hg except for
    --git-since. Use --hg-since instead.

    The number of commits can differ for git and hg, so --rolestats
    might be different.

    Style changes: Use common push style push(@foo...), simplify a return

    Bumped version to 0.23.

    Signed-off-by: Joe Perches
    Cc: Marti Raudsepp
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Fix email matching without name --n and --git-blame
    Using --non and --git-blame caused maintainer signature
    matching to fail. Fixed that by adding 3rd argument to
    sub format_email to control show/hide name portion of address
    Slurp -f file instead of reading line-by-line for K: pattern matching.
    Suggested by Wolfram Sang as more efficient
    Refactor git command execution
    Break into 2 functions, execute/analyze
    Share code between --git and --git-blame
    Don't warn multiple times when git isn't installed
    Improve stats reporting
    --git-min-percent and -- rolestats now count the total number of commits
    for either the period of --git-since or if using --git-blame the commits
    used by the current file and calculate commit % as
    # of commits signed / total commits * 100
    Code style cleaning
    Use consistent sub foo { my (args...) = @_;

    Signed-off-by: Joe Perches
    Cc: Ben Hutchings
    Cc: Greg KH
    Cc: Pavel Machek
    Cc: Wolfram Sang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • --roles shows the role of each email address, i.e. why it was selected.
    --rolestats selects --roles and adds git log/blame signers #'s and %

    Multiple roles are possible (supporter, maintainer, git-signer...)

    --roles or --rolestats is meant to help identify appropriate maintainers
    to notify and should not be used with "git send-email --cc-cmd"

    Example output:

    Existing:

    $ ./scripts/get_maintainer.pl -f arch/x86/kernel/acpi/boot.c
    Corentin Chary
    Karol Kozimor
    Len Brown
    Pavel Machek
    Rafael J. Wysocki
    Thomas Gleixner
    Ingo Molnar
    H. Peter Anvin
    x86@kernel.org
    Yinghai Lu
    Jeremy Fitzhardinge
    acpi4asus-user@lists.sourceforge.net
    linux-pm@lists.linux-foundation.org
    linux-kernel@vger.kernel.org

    With --roles

    $ ./scripts/get_maintainer.pl --roles -f arch/x86/kernel/acpi/boot.c
    Corentin Chary (maintainer:ASUS ACPI EXTRAS...)
    Karol Kozimor (maintainer:ASUS ACPI EXTRAS...)
    Len Brown (supporter:SUSPEND TO RAM,git-signer)
    Pavel Machek (supporter:SUSPEND TO RAM)
    Rafael J. Wysocki (supporter:SUSPEND TO RAM)
    Thomas Gleixner (maintainer:X86 ARCHITECTURE...)
    Ingo Molnar (maintainer:X86 ARCHITECTURE...,git-signer)
    H. Peter Anvin (maintainer:X86 ARCHITECTURE...)
    x86@kernel.org (maintainer:X86 ARCHITECTURE...)
    Yinghai Lu (git-signer)
    Jeremy Fitzhardinge (git-signer)
    acpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)
    linux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)
    linux-kernel@vger.kernel.org (open list)

    With --rolestats

    $ ./scripts/get_maintainer.pl --rolestats -f arch/x86/kernel/acpi/boot.c
    Corentin Chary (maintainer:ASUS ACPI EXTRAS...)
    Karol Kozimor (maintainer:ASUS ACPI EXTRAS...)
    Len Brown (supporter:SUSPEND TO RAM,git-signer:16/79=20%)
    Pavel Machek (supporter:SUSPEND TO RAM)
    Rafael J. Wysocki (supporter:SUSPEND TO RAM)
    Thomas Gleixner (maintainer:X86 ARCHITECTURE...)
    Ingo Molnar (maintainer:X86 ARCHITECTURE...,git-signer:29/79=37%)
    H. Peter Anvin (maintainer:X86 ARCHITECTURE...)
    x86@kernel.org (maintainer:X86 ARCHITECTURE...)
    Yinghai Lu (git-signer:12/79=15%)
    Jeremy Fitzhardinge (git-signer:6/79=8%)
    acpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)
    linux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)
    linux-kernel@vger.kernel.org (open list)

    With --rolestats and --git-blame

    $ ./scripts/get_maintainer.pl --rolestats --git-blame -f arch/x86/kernel/acpi/boot.c
    Corentin Chary (maintainer:ASUS ACPI EXTRAS...)
    Karol Kozimor (maintainer:ASUS ACPI EXTRAS...)
    Len Brown (supporter:SUSPEND TO RAM,git-signer:16/79=20%,commits:22/154=14%)
    Pavel Machek (supporter:SUSPEND TO RAM)
    Rafael J. Wysocki (supporter:SUSPEND TO RAM)
    Thomas Gleixner (maintainer:X86 ARCHITECTURE...)
    Ingo Molnar (maintainer:X86 ARCHITECTURE...,git-signer:29/79=37%,commits:36/154=23%)
    H. Peter Anvin (maintainer:X86 ARCHITECTURE...)
    x86@kernel.org (maintainer:X86 ARCHITECTURE...)
    Yinghai Lu (git-signer:12/79=15%,commits:9/154=6%)
    Jeremy Fitzhardinge (git-signer:6/79=8%)
    Andi Kleen (commits:11/154=7%)
    Andrew Morton (commits:10/154=6%)
    acpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)
    linux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)
    linux-kernel@vger.kernel.org (open list)

    Other changes:

    Format git-signers email addresses a bit to reduce bad signatures
    Command line bad arguments emitted a verbose usage(), just show --help
    Version number bumped to .22

    Ben Hutchings had the idea and created a good deal of this implementation.

    Signed-off-by: Joe Perches
    Signed-off-by: Ben Hutchings
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

12 Nov, 2009

1 commit


29 Oct, 2009

1 commit

  • Based on an idea from Wolfram Sang.

    Add search for MAINTAINERS line "K:" regex pattern match in a patch or file
    Matches are added after file pattern matches
    Add --keywords command line switch (default 1, on)
    Change version to 0.21

    Signed-off-by: Joe Perches
    Cc: Wolfram Sang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

22 Sep, 2009

8 commits

  • Previous behavior was "bottom-up" in each section from the pattern "F:"
    entry that matched. Now information is entered into the various lists in
    the "as entered" order for each matched section.

    This also allows the F: entry to be put anywhere in a section, not just as
    the last entries in the section.

    And a couple of improvements:

    Don't alphabetically sort before outputting the matched scm, status,
    subsystem and web sections.

    Ignore content after a single email address so these entries are acceptable
    M: name

    whatever other comment

    And a fix:

    Make an M: entry without a name again use the name from an immediately
    preceding P: line if it exists.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Allow control over the elimination of duplicate email names and addresses

    --remove-duplicates will use the first email name or address presented
    --noremove-duplicates will emit all names and addresses

    --remove-duplicates is enabled by default

    For instance:

    $ ./scripts/get_maintainer.pl -f drivers/char/tty_ioctl.c
    Greg Kroah-Hartman
    Alan Cox
    Mike Frysinger
    Alexey Dobriyan
    linux-kernel@vger.kernel.org

    $ ./scripts/get_maintainer.pl -f --noremove-duplicates drivers/char/tty_ioctl.c
    Greg Kroah-Hartman
    Alan Cox
    Alan Cox
    Alan Cox
    Mike Frysinger
    Alexey Dobriyan
    linux-kernel@vger.kernel.org

    Using --remove-duplicates could eliminate multiple maintainers that
    share the same name but not the same email address.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • If a person sets a separator, it's only used if --nomultiline is set.
    Don't make the command line also include --nomultiline in that case.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Add reading and using .mailmap file if it exists
    Convert address entries in .mailmap to first encountered address
    Don't terminate shell commands with \n
    Strip characters found after sign-offs by: name

    [stripped]

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Added format_email and parse_email routines to reduce inline use.

    Added email_address_inuse to eliminate multiple maintainer entries
    for the same email address, the first name encountered is used.

    Used internal perl equivalents of shell cmd use of grep|cut|sort|uniq

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • --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

    Joe Perches
     
  • Before this change, matched sections were added in the order
    of appearance in the normally alphabetic section order of
    the MAINTAINERS file.

    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
    Miroslav Zagorac
    linux-scsi@vger.kernel.org
    linux-kernel@vger.kernel.org

    get_maintainer.pl now selects matched sections by longest pattern match.
    Longest is the number of "/"s and any specific file pattern.

    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
    James E.J. Bottomley
    linux-scsi@vger.kernel.org
    linux-kernel@vger.kernel.org

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Julia Lawall suggested that get_maintainers.pl should have the
    ability to include signatories of commits that are modified by
    a particular patch.

    Vegard Nossum did something similar once.
    http://lkml.org/lkml/2008/5/29/449

    The modified script looks the commits for all lines in the
    patch, and includes the "-by:" signatories for those commits.
    It uses the same git-min-percent, git-max-maintainers, and
    git-min-signatures options. git-since is ignored.

    It can be used independently from the --git default, so
    ./scripts/get_maintainers.pl --nogit --git-blame
    or
    ./scripts/get_maintainers.pl --nogit --git-blame -f
    is acceptable.

    If used with -f , all lines/commits for the file are
    checked.

    --git-blame can be slow if used with -f
    --git-blame does not work with -f

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

30 Jul, 2009

3 commits

  • Allow an option to control the minimum percentage of sign-offs required
    before being considered a maintainer.

    git-min-percent has a default value of 5

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Allow an option to control the minimum percentage of sign-offs required
    before being considered a maintainer.

    git-min-percent has a default value of 5

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Don't require a specific file in a directory to be tested.

    Also Arnd Bergmann pointed out that the MAINTAINERS pattern requirement
    that directory patterns have a trailing slash was unnecessary and was
    likely to be error prone. Removed that requirement.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

17 Jun, 2009

10 commits


11 Apr, 2009

2 commits

  • Improve handling of "by:" signoffs
    Sorting and frequency checks are done by name/email, not
    by "by:" tag.

    Signed-off-by: Joe Perches

    Joe Perches
     
  • A script to parse file pattern information in MAINTAINERS
    and return selected information about a file or patch

    usage: scripts/get_maintainer.pl [options] patchfile
    scripts/get_maintainer.pl [options] -f file
    version: 0.14

    MAINTAINERS field selection options:
    --email => print email address(es) if any
    --git => include git "*-by:" signers in commit count order
    --git-chief-penguins => include (Linus Torvalds)
    --git-min-signatures => number of signatures required (default: 1)
    --git-max-maintainers => maximum maintainers to add (default: 5)
    --git-since => git history to use (default: 1-year-ago)
    --m => include maintainer(s) if any
    --n => include name 'Full Name '
    --l => include list(s) if any
    --s => include subscriber only list(s) if any
    --scm => print SCM tree(s) if any
    --status => print status if any
    --subsystem => print subsystem name if any
    --web => print website(s) if any

    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:
    --version => show version
    --help => show this help information

    Signed-off-by: Joe Perches
    Acked-by: Pavel Machek

    Joe Perches