Thread (3 messages) 3 messages, 2 authors, 2016-08-31

Re: [PATCH] git-send-email: Add ability to cc: any "trailers" from commit message

From: Junio C Hamano <hidden>
Date: 2016-08-31 17:54:50
Also in: lkml

Joe Perches [off-list ref] writes:
Many commits have various forms of trailers similar to
     "Acked-by: Name <address>" and "Reported-by: Name <address>"

Add the ability to cc these trailers when using git send-email.
I thought you were asking what we call these "<token> followed by
<colon>" at the end of the log message, and "footers or trailers"
was the answer.

I do not have a strong objection against limiting to "-by:" lines;
for one thing, it would automatically avoid having to worry about
"Bug-ID:" and other trailers that won't have e-mail address at all.

But if you are _only_ picking up "-by:" lines, then calling this
option "trailers" is way too wide and confusing.  I do not think
there is any specific name for "-by:" lines, though.  Perhaps you
would need to invent some name that has "-by" as a substring.

"any-by"?  or just "by"?  I dunno.
 if ($suppress_cc{'all'}) {
-	foreach my $entry (qw (cccmd cc author self sob body bodycc)) {
+	foreach my $entry (qw (cccmd cc author self sob body bodycc trailers)) {
 		$suppress_cc{$entry} = 1;
 	}
OK.
quoted hunk
@@ -448,7 +448,7 @@ $suppress_cc{'self'} = $suppress_from if defined $suppress_from;
 $suppress_cc{'sob'} = !$signed_off_by_cc if defined $signed_off_by_cc;
 
 if ($suppress_cc{'body'}) {
-	foreach my $entry (qw (sob bodycc)) {
+	foreach my $entry (qw (sob bodycc trailers)) {
 		$suppress_cc{$entry} = 1;
 	}
 	delete $suppress_cc{'body'};
OK.
quoted hunk
@@ -1545,7 +1545,7 @@ foreach my $t (@files) {
 	# Now parse the message body
 	while(<$fh>) {
 		$message .=  $_;
-		if (/^(Signed-off-by|Cc): (.*)$/i) {
+		if (/^(Signed-off-by|Cc|[^\s]+[_-]by): (.*)$/i) {
Micronits:

 (1) do you really want to grab a run of any non-blanks?  Don't
     you want to exclude at least a colon?
 (2) allowing an underscore looks a bit unusual.  
quoted hunk
@@ -1555,6 +1555,12 @@ foreach my $t (@files) {
 			} else {
 				next if $suppress_cc{'sob'} and $what =~ /Signed-off-by/i;
 				next if $suppress_cc{'bodycc'} and $what =~ /Cc/i;
+				next if $suppress_cc{'trailers'} and $what !~ /Signed-off-by/i && $what =~ /by$/i;
+			}
It is a bit unfortunate that S-o-b is a subset of any-by that forces
you to do this.
+			if ($c !~ /.+@.+/) {
+				printf("(body) Ignoring %s from line '%s'\n",
+				       $what, $_) unless $quiet;
+				next;
 			}
This check is new and applies to sob/cc, too.

I am aware of the fact that people sometimes write only a name with
no e-mail address when giving credit to a third-party and we want to
avoid upsetting the underlying MTA by feeding it a non-address.

Looking at existing helper subs like extract_valid_address and
sanitize_address that all addresses we pass to the MTA go through,
it appears to me that we try to support an addr-spec with only
local-part without @domain, so this new check might turn out to be
too strict from that point of view, but on the other hand I suspect
it won't be a huge issue because the addresses in the footers are
for public consumption and it may not make much sense to have a
local-only address there.  I dunno.
 			push @cc, $c;
 			printf("(body) Adding cc: %s from line '%s'\n",
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help