get_maintainer.pl: restrict cases where it falls back to --git
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 22 Oct 2014 08:41:16 +0000 (10:41 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 23 Oct 2014 14:41:27 +0000 (16:41 +0200)
The list emitted by --git-fallback often leads inexperienced contributors
to add pointless CCs.  While not discouraging usage of --git-fallback,
we want to:

1) disable the fallback if only some files lack a maintainer

    $ scripts/get_maintainer.pl -f util/cutils.c hw/ide/core.c
    Kevin Wolf <kwolf@redhat.com> (odd fixer:IDE)
    Stefan Hajnoczi <stefanha@redhat.com> (odd fixer:IDE)

This behavior is taken even if --git-fallback is specified.

2) warn the contributors about what we're doing, asking them to use their
common sense:

    $ scripts/get_maintainer.pl -f util/cutils.c
    get_maintainer.pl: No maintainers found, printing recent contributors.
    get_maintainer.pl: Do not blindly cc: them on patches!  Use common sense.

    Luiz Capitulino <lcapitulino@redhat.com> (commit_signer:1/2=50%)
    ...
    $

Explicitly disabling the fallback will not result in the warning message:

    $ scripts/get_maintainer.pl -f util/cutils.c   --no-git-fallback
    $ echo $?
    0

(Returning 1 would break usage of scripts/get_maintainer.pl as a cccmd
for git-send-email).

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
scripts/get_maintainer.pl

index 906dcbe468a931c7ce521516731f7e4b66101b45..af68c6c92d3714846f49c959bc6e0520e03f4b35 100755 (executable)
@@ -652,6 +652,15 @@ sub get_maintainers {
     }
 
     if ($email) {
+       if (! $interactive) {
+           $email_git_fallback = 0 if @email_to > 0 || @list_to > 0 || $email_git || $email_git_blame;
+           if ($email_git_fallback) {
+               print STDERR "get_maintainer.pl: No maintainers found, printing recent contributors.\n";
+               print STDERR "get_maintainer.pl: Do not blindly cc: them on patches!  Use common sense.\n";
+               print STDERR "\n";
+            }
+        }
+
        foreach my $file (@files) {
            if ($email_git || ($email_git_fallback &&
                               !$exact_pattern_match_hash{$file})) {