Re: [PATCH V2] git-send-email: Add ability to cc: any "bylines" in the commit message
On Wed, 2016-08-31 at 11:51 -0700, Joe Perches wrote: > Many commits have various forms of bylines similar to > "Acked-by: Name " and "Reported-by: Name " > > Add the ability to cc: bylines (e.g. Acked-by:) when using git send- > email. > > This can be suppressed with --suppress-cc=bylines. > > Signed-off-by: Joe Perches > --- > Documentation/git-send-email.txt | 11 +++ > git-send-email.perl | 16 +++- > 2 files changed, 18 insertions(+), 9 deletions(-) Acked-by: Jeff Kirsher signature.asc Description: This is a digitally signed message part
Re: [PATCH V2] git-send-email: Add ability to cc: any "bylines" in the commit message
Joe Perches writes: > On Wed, 2016-08-31 at 12:34 -0700, Junio C Hamano wrote: >> Joe Perches writes: >> > Many commits have various forms of bylines similar to >> A missing blank line (I can tweak while queuing). > [] >> > + next if $suppress_cc{'bylines'} and $what !~ >> > /Signed-off-by/i and $what =~ /by$/i; >> Having to keep this /by$/i in sync with whatever definition of >> bylines is will be error prone. How about doing it in this way? >> >> # Now parse the message body >> +my $bypat = r/[\w-]+-by/; >> while (<$fh>) { >> ... >> if (/^(Signed-off-by|Cc|$bypat): (.*)$/i) { >> ... >> next if $suppress_cc{'bodycc'} and $what =~ >> /Cc/i; >> +next if $suppress_cc{'bylines'} and >> +$what !~ /^Signed-off-by/i and >> +$what =~ /^$bypat/i; >> >> Other than that, looking good. > > Sure, whatever you want, do you want a v3 from me or can > you fix it up however you want? This topic is not my itch, so "however I want" would not be a good instruction to me--The lazy one in me would be tempted to say "ok, then I'd drop it altogether" ;-) I am sure the typo "[^\s]+[\w-]by" in the one we just saw was merely because you rushed it out without double checking. We are in pre-release feature freeze so there is no need to rush. I'd prefer to see a final version that is carefully proof-read by the author. Thanks.
Re: [PATCH V2] git-send-email: Add ability to cc: any "bylines" in the commit message
On Wed, 2016-08-31 at 12:34 -0700, Junio C Hamano wrote: > Joe Perches writes: > > Many commits have various forms of bylines similar to > A missing blank line (I can tweak while queuing). [] > > + next if $suppress_cc{'bylines'} and $what !~ > > /Signed-off-by/i and $what =~ /by$/i; > Having to keep this /by$/i in sync with whatever definition of > bylines is will be error prone. How about doing it in this way? > > # Now parse the message body > + my $bypat = r/[\w-]+-by/; > while (<$fh>) { > ... > if (/^(Signed-off-by|Cc|$bypat): (.*)$/i) { > ... > next if $suppress_cc{'bodycc'} and $what =~ > /Cc/i; > + next if $suppress_cc{'bylines'} and > + $what !~ /^Signed-off-by/i and > + $what =~ /^$bypat/i; > > Other than that, looking good. Sure, whatever you want, do you want a v3 from me or can you fix it up however you want?
Re: [PATCH V2] git-send-email: Add ability to cc: any "bylines" in the commit message
Joe Perches writes: > Many commits have various forms of bylines similar to A missing blank line (I can tweak while queuing). > "Acked-by: Name " and "Reported-by: Name " > > Add the ability to cc: bylines (e.g. Acked-by:) when using git send-email. > > This can be suppressed with --suppress-cc=bylines. > ... > @@ -307,8 +308,10 @@ Automating >patch body (commit message) except for self (use 'self' for that). > - 'sob' will avoid including anyone mentioned in Signed-off-by lines except > for self (use 'self' for that). > +- 'bylines' will avoid including anyone mentioned in any "-by:" lines > + in the patch header except for Signed-off-by. feels a bit too informal but I don't think of a better alternative, perhaps other than "*-by:". > @@ -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]+[\w-]by): (.*)$/i) { I thought you wanted if (/^(Signed-off-by|Cc|[\w-]+-by): (.*)$/i) { instead to avoid "O_=:;fooby: Joe Perches " > chomp; > my ($what, $c) = ($1, $2); > chomp $c; > @@ -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{'bylines'} and $what !~ > /Signed-off-by/i and $what =~ /by$/i; Having to keep this /by$/i in sync with whatever definition of bylines is will be error prone. How about doing it in this way? # Now parse the message body + my $bypat = r/[\w-]+-by/; while (<$fh>) { ... if (/^(Signed-off-by|Cc|$bypat): (.*)$/i) { ... next if $suppress_cc{'bodycc'} and $what =~ /Cc/i; + next if $suppress_cc{'bylines'} and + $what !~ /^Signed-off-by/i and + $what =~ /^$bypat/i; Other than that, looking good.
[PATCH V2] git-send-email: Add ability to cc: any "bylines" in the commit message
Many commits have various forms of bylines similar to "Acked-by: Name " and "Reported-by: Name " Add the ability to cc: bylines (e.g. Acked-by:) when using git send-email. This can be suppressed with --suppress-cc=bylines. Signed-off-by: Joe Perches --- Documentation/git-send-email.txt | 11 +++ git-send-email.perl | 16 +++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt index 642d0ef..0b0d945 100644 --- a/Documentation/git-send-email.txt +++ b/Documentation/git-send-email.txt @@ -278,9 +278,10 @@ Automating the value of `sendemail.identity`. --[no-]signed-off-by-cc:: - If this is set, add emails found in Signed-off-by: or Cc: lines to the - cc list. Default is the value of `sendemail.signedoffbycc` configuration - value; if that is unspecified, default to --signed-off-by-cc. + If this is set, add emails found in Signed-off-by: or Cc: or any other + byline (e.g. Acked-by:) lines to the cc list. Default is the value of + `sendemail.signedoffbycc` configuration value; if that is unspecified, + default to --signed-off-by-cc. --[no-]cc-cover:: If this is set, emails found in Cc: headers in the first patch of @@ -307,8 +308,10 @@ Automating patch body (commit message) except for self (use 'self' for that). - 'sob' will avoid including anyone mentioned in Signed-off-by lines except for self (use 'self' for that). +- 'bylines' will avoid including anyone mentioned in any "-by:" lines + in the patch header except for Signed-off-by. - 'cccmd' will avoid running the --cc-cmd. -- 'body' is equivalent to 'sob' + 'bodycc' +- 'body' is equivalent to 'sob' + 'bodycc' + 'bylines' - 'all' will suppress all auto cc values. -- + diff --git a/git-send-email.perl b/git-send-email.perl index da81be4..1f53328 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -84,7 +84,7 @@ git send-email --dump-aliases --identity* Use the sendemail. options. --to-cmd * Email To: via ` \$patch_path` --cc-cmd * Email Cc: via ` \$patch_path` ---suppress-cc * author, self, sob, cc, cccmd, body, bodycc, all. +--suppress-cc * author, self, sob, cc, cccmd, body, bodycc, bylines, all. --[no-]cc-cover* Email Cc: addresses in the cover letter. --[no-]to-cover* Email To: addresses in the cover letter. --[no-]signed-off-by-cc* Send to Signed-off-by: addresses. Default on. @@ -431,13 +431,13 @@ my(%suppress_cc); if (@suppress_cc) { foreach my $entry (@suppress_cc) { die "Unknown --suppress-cc field: '$entry'\n" - unless $entry =~ /^(?:all|cccmd|cc|author|self|sob|body|bodycc)$/; + unless $entry =~ /^(?:all|cccmd|cc|author|self|sob|body|bodycc|bylines)$/; $suppress_cc{$entry} = 1; } } 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 bylines)) { $suppress_cc{$entry} = 1; } delete $suppress_cc{'all'}; @@ -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 bylines)) { $suppress_cc{$entry} = 1; } delete $suppress_cc{'body'}; @@ -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]+[\w-]by): (.*)$/i) { chomp; my ($what, $c) = ($1, $2); chomp $c; @@ -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{'bylines'} and $what !~ /Signed-off-by/i and $what =~ /by$/i; + } + if ($c !~ /.+@.+/) { + printf("(body) Ignoring %s from line '%s'\n", + $what, $_) unless $quiet; + next; } push @cc, $c; printf("(body) Adding cc: %s from line '%s'\n", -- 2.10.0.rc2.1.gaa4c9e0