On Sun, 2019-03-17 at 20:27 +0100, Rasmus Villemoes wrote: > On 16/03/2019 20.26, Baruch Siach wrote: > > Since commit ef0cc1df90f6b ("send-email: also pick up cc addresses from > > -by trailers") in git version 2.20, git send-email adds to cc list > > addresses from all *-by lines. As a side effect a line with > > '-Signed-off-by' is now also added to cc. This makes send-email pick > > lines from patches that remove patch files from the git repo. This is > > common in the Buildroot project that often removes (and adds) patch > > files that have 'Signed-off-by' in their patch description part. > > Yocto/OpenEmbedded and other projects do the same > > > Consider only *-by lines that start with [a-z] (case insensitive) to > > avoid unrelated addresses in cc. > > While I agree with Joe in principle that we really should not look > inside the diff part, all lines there start with [ +-], so we wouldn't > normally pick up anything from that due to the anchoring. Except for the > misc-by regexp that added hyphens to grab Reported-and-tested-by and > similar. So this is by far the simplest fix that doesn't hurt the common > use cases the misc-by handling was added to support, so > > Acked-by: Rasmus Villemoes <rv@xxxxxxxxxxxxxxxxxx> My preference would be for correctness. I presume something like this isn't too onerous. --- git-send-email.perl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git-send-email.perl b/git-send-email.perl index 8200d58cdc..83b0429576 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1697,9 +1697,10 @@ sub process_file { } } # Now parse the message body + my $in_patch = 0; while(<$fh>) { $message .= $_; - if (/^([a-z-]*-by|Cc): (.*)/i) { + if (!$in_patch && /^([a-z-]*-by|Cc): (.*)/i) { chomp; my ($what, $c) = ($1, $2); # strip garbage for the address we'll use: @@ -1725,6 +1726,8 @@ sub process_file { push @cc, $c; printf(__("(body) Adding cc: %s from line '%s'\n"), $c, $_) unless $quiet; + } elsif (/^---/) { + $in_patch = 1; } } close $fh;