On Sun, 2022-12-04 at 14:55 +0100, Marco Elver wrote: > [+Cc Ingo, who had been working on lots of include improvements.] > > The Cc list is odd -- it appears that get_maintainers.pl is broken on > init_task.c: > > $> ./scripts/get_maintainer.pl init/init_task.c > Mark Rutland <mark.rutland@xxxxxxx> (commit_signer:1/1=100%) > "Paul E. McKenney" <paulmck@xxxxxxxxxx> (commit_signer:1/1=100%) > Marco Elver <elver@xxxxxxxxxx> (commit_signer:1/1=100%,authored:1/1=100%,removed_lines:5/5=100%) > linux-kernel@xxxxxxxxxxxxxxx (open list) > > What's going on here? No one claims to be a maintainer of any init/ files ($ git grep "^F:.*init" MAINTAINERS) so by default it merely shows the people that have patched the particular file in the last year. You could perhaps see this better by adding --no-git --no-gitfallback to the get_maintainer.pl command line $ ./scripts/get_maintainer.pl --nogit --nogit-fallback init/init_task.c linux-kernel@xxxxxxxxxxxxxxx (open list) see the --help option for details $ ./scripts/get_maintainer.pl --help usage: ./scripts/get_maintainer.pl [options] patchfile ./scripts/get_maintainer.pl [options] -f file|directory version: 0.26 MAINTAINER field selection options: --email => print email address(es) if any --git => include recent git *-by: signers --git-all-signature-types => include signers regardless of signature type or use only (Signed-off-by:|Reviewed-by:|Acked-by:) signers (default: 0) --git-fallback => use git when no exact MAINTAINERS pattern (default: 1) --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-min-percent => minimum percentage of commits required (default: 5) --git-blame => use git blame to find modified commits for patch or file --git-blame-signatures => when used with --git-blame, also include all commit signers --git-since => git history to use (default: 1-year-ago) --hg-since => hg history to use (default: -365) --interactive => display a menu (mostly useful if used with the --git option) --m => include maintainer(s) if any --r => include reviewer(s) if any --n => include name 'Full Name <addr@xxxxxxxxxx>' --l => include list(s) if any --moderated => include moderated lists(s) if any (default: true) --s => include subscriber only list(s) if any (default: false) --remove-duplicates => minimize duplicate email names/addresses --roles => show roles (status:subsystem, git-signer, list, etc...) --rolestats => show roles and statistics (commits/total_commits, %) --file-emails => add email addresses found in -f file (default: 0 (off)) --fixes => for patches, add signatures of commits with 'Fixes: <commit>' (default: 1 (on)) --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 using --separator also sets --nomultiline if --separator is not [, ] --multiline => print 1 entry per line Other options: --pattern-depth => Number of pattern directory traversals (default: 0 (all)) --keywords => scan patch for keywords (default: 1) --sections => print all of the subsystem sections with pattern matches --letters => print all matching 'letter' types from all matching sections --mailmap => use .mailmap file (default: 1) --no-tree => run without a kernel tree --self-test => show potential issues with MAINTAINERS file content --version => show version --help => show this help information Default options: [--email --tree --nogit --git-fallback --m --r --n --l --multiline --pattern-depth=0 --remove-duplicates --rolestats] Notes: Using "-f directory" may give unexpected results: Used with "--git", git signators for _all_ files in and below directory are examined as git recurses directories. Any specified X: (exclude) pattern matches are _not_ ignored. Used with "--nogit", directory is used as a pattern match, no individual file within the directory or subdirectory is matched. Used with "--git-blame", does not iterate all files in directory Using "--git-blame" is slow and may add old committers and authors that are no longer active maintainers to the output. Using "--roles" or "--rolestats" with git send-email --cc-cmd or any other automated tools that expect only ["name"] <email address> may not work because of additional output after <email address>. Using "--rolestats" and "--git-blame" shows the #/total=% commits, not the percentage of the entire file authored. # of commits is not a good measure of amount of code authored. 1 major commit may contain a thousand lines, 5 trivial commits may modify a single line. If git is not installed, but mercurial (hg) is installed and an .hg repository exists, the following options apply to mercurial: --git, --git-min-signatures, --git-max-maintainers, --git-min-percent, and --git-blame Use --hg-since not --git-since to control date selection File ".get_maintainer.conf", if it exists in the linux kernel source root directory, can change whatever get_maintainer defaults are desired. Entries in this file can be any command line argument. This file is prepended to any additional command line arguments. Multiple lines and # comments are allowed. Most options have both positive and negative forms. The negative forms for --<foo> are --no<foo> and --no-<foo>.