Interdiff to Jay's v2. --- Documentation/git-send-email.txt | 27 +++++--- git-send-email.perl | 20 +++--- t/t9001-send-email.sh | 142 +++++++++++++++++++++++++++++--------- 3 files changed, 136 insertions(+), 53 deletions(-) diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt index d6af035..45a092c 100644 --- a/Documentation/git-send-email.txt +++ b/Documentation/git-send-email.txt @@ -164,16 +164,23 @@ Automating --suppress-cc:: Specify an additional category of recipients to suppress the - auto-cc of. 'self' will avoid including the sender, 'author' will - avoid including the patch author, 'cc' will avoid including anyone - mentioned in Cc lines in the patch header, 'ccbody' will avoid - including anyone mentioned in Cc lines in the patch body (commit - message), 'sob' will avoid including anyone mentioned in Signed-off-by - lines, and 'cccmd' will avoid running the --cc-cmd. 'body' is - equivalent to 'sob' + 'ccbody'. 'all' will suppress all auto cc - values. Default is the value of 'sendemail.suppresscc' configuration - value; if that is unspecified, default to 'self' if --suppress-from is - specified, as well as 'body' if --no-signed-off-cc is specified. + auto-cc of: ++ +-- +- 'author' will avoid including the patch author +- 'cc' will avoid including anyone mentioned in Cc lines in the patch header +- 'ccbody' will avoid including anyone mentioned in Cc lines in the + patch body (commit message) +- 'cccmd' will avoid running the --cc-cmd. +- 'self' will avoid including the sender +- 'sob' will avoid including anyone mentioned in Signed-off-by lines +- 'body' is equivalent to 'sob' + 'ccbody' +- 'all' will suppress all auto cc values. +-- ++ +Default is the value of 'sendemail.suppresscc' configuration value; if +that is unspecified, default to 'self' if --suppress-from is +specified, as well as 'body' if --no-signed-off-cc is specified. --[no-]suppress-from:: If this is set, do not add the From: address to the cc: list. diff --git a/git-send-email.perl b/git-send-email.perl index 23a55e2..3a8c71f 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -69,8 +69,7 @@ --identity <str> * Use the sendemail.<id> options. --cc-cmd <str> * Email Cc: via `<str> \$patch_path` --suppress-cc <str> * author, self, sob, cc, cccmd, body, bodycc, all. - --[no-]signed-off-by-cc * Send to Cc: and Signed-off-by: - addresses. Default on. + --[no-]signed-off-by-cc * Send to Signed-off-by: addresses. Default on. --[no-]suppress-from * Send to self. Default off. --[no-]chain-reply-to * Chain In-Reply-To: fields. Default on. --[no-]thread * Use In-Reply-To: field. Default on. @@ -331,16 +330,16 @@ delete $suppress_cc{'all'}; } -if ($suppress_cc{'sob'} && $suppress_cc{'bodycc'}) { - $suppress_cc{'body'} = 1; -} - # If explicit old-style ones are specified, they trump --suppress-cc. $suppress_cc{'self'} = $suppress_from if defined $suppress_from; -# For backwards compatibility, old-style --signed-off-by-cc suppresses -# SOB and body Cc lines, whereas --supress-cc=sob suppresses just the SOB -# line, but not the body Cc. -$suppress_cc{'body'} = !$signed_off_by_cc if defined $signed_off_by_cc; +$suppress_cc{'sob'} = !$signed_off_by_cc if defined $signed_off_by_cc; + +if ($suppress_cc{'body'}) { + foreach my $entry (qw (sob bodycc)) { + $suppress_cc{$entry} = 1; + } + delete $suppress_cc{'body'}; +} # Debugging, print out the suppressions. if (0) { @@ -1014,7 +1013,6 @@ sub get_patch_subject($) { # Now parse the message body while(<F>) { $message .= $_; - next if $suppress_cc{'body'}; if (/^(Signed-off-by|Cc): (.*)$/i) { chomp; my ($what, $c) = ($1, $2); diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index d7766f9..ca006cf 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -172,7 +172,7 @@ test_expect_success 'second message is patch' ' grep "Subject:.*Second" msgtxt2 ' -cat >expected-show-all-headers <<\EOF +cat >expected-suppress-sob <<\EOF 0001-Second.patch (mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' (mbox) Adding cc: One <one@xxxxxxxxxxx> from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' @@ -192,11 +192,10 @@ X-Mailer: X-MAILER-STRING Result: OK EOF -test_expect_success 'sendemail.cc set' ' - git config sendemail.cc cc@xxxxxxxxxxx && +test_suppression () { git send-email \ --dry-run \ - --suppress-cc=sob \ + --suppress-cc=$1 \ --from="Example <from@xxxxxxxxxxx>" \ --to=to@xxxxxxxxxxx \ --smtp-server relay.example.com \ @@ -204,11 +203,16 @@ test_expect_success 'sendemail.cc set' ' sed -e "s/^\(Date:\).*/\1 DATE-STRING/" \ -e "s/^\(Message-Id:\).*/\1 MESSAGE-ID-STRING/" \ -e "s/^\(X-Mailer:\).*/\1 X-MAILER-STRING/" \ - >actual-show-all-headers && - test_cmp expected-show-all-headers actual-show-all-headers + >actual-suppress-$1 && + test_cmp expected-suppress-$1 actual-suppress-$1 +} + +test_expect_success 'sendemail.cc set' ' + git config sendemail.cc cc@xxxxxxxxxxx && + test_suppression sob ' -cat >expected-show-all-headers <<\EOF +cat >expected-suppress-sob <<\EOF 0001-Second.patch (mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' (mbox) Adding cc: One <one@xxxxxxxxxxx> from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' @@ -230,21 +234,10 @@ EOF test_expect_success 'sendemail.cc unset' ' git config --unset sendemail.cc && - git send-email \ - --dry-run \ - --suppress-cc=sob \ - --from="Example <from@xxxxxxxxxxx>" \ - --to=to@xxxxxxxxxxx \ - --smtp-server relay.example.com \ - $patches | - sed -e "s/^\(Date:\).*/\1 DATE-STRING/" \ - -e "s/^\(Message-Id:\).*/\1 MESSAGE-ID-STRING/" \ - -e "s/^\(X-Mailer:\).*/\1 X-MAILER-STRING/" \ - >actual-show-all-headers && - test_cmp expected-show-all-headers actual-show-all-headers + test_suppression sob ' -cat >expected-show-all-headers <<\EOF +cat >expected-suppress-all <<\EOF 0001-Second.patch Dry-OK. Log says: Server: relay.example.com @@ -261,18 +254,103 @@ Result: OK EOF test_expect_success '--suppress-cc=all' ' - git send-email \ - --dry-run \ - --suppress-cc=all \ - --from="Example <from@xxxxxxxxxxx>" \ - --to=to@xxxxxxxxxxx \ - --smtp-server relay.example.com \ - $patches | - sed -e "s/^\(Date:\).*/\1 DATE-STRING/" \ - -e "s/^\(Message-Id:\).*/\1 MESSAGE-ID-STRING/" \ - -e "s/^\(X-Mailer:\).*/\1 X-MAILER-STRING/" \ - >actual-show-all-headers && - test_cmp expected-show-all-headers actual-show-all-headers + test_suppression all +' + +cat >expected-suppress-body <<\EOF +0001-Second.patch +(mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' +(mbox) Adding cc: One <one@xxxxxxxxxxx> from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +(mbox) Adding cc: two@xxxxxxxxxxx from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +Dry-OK. Log says: +Server: relay.example.com +MAIL FROM:<from@xxxxxxxxxxx> +RCPT TO:<to@xxxxxxxxxxx>,<author@xxxxxxxxxxx>,<one@xxxxxxxxxxx>,<two@xxxxxxxxxxx> +From: Example <from@xxxxxxxxxxx> +To: to@xxxxxxxxxxx +Cc: A <author@xxxxxxxxxxx>, One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx +Subject: [PATCH 1/1] Second. +Date: DATE-STRING +Message-Id: MESSAGE-ID-STRING +X-Mailer: X-MAILER-STRING + +Result: OK +EOF + +test_expect_success '--suppress-cc=body' ' + test_suppression body +' + +cat >expected-suppress-sob <<\EOF +0001-Second.patch +(mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' +(mbox) Adding cc: One <one@xxxxxxxxxxx> from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +(mbox) Adding cc: two@xxxxxxxxxxx from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +Dry-OK. Log says: +Server: relay.example.com +MAIL FROM:<from@xxxxxxxxxxx> +RCPT TO:<to@xxxxxxxxxxx>,<author@xxxxxxxxxxx>,<one@xxxxxxxxxxx>,<two@xxxxxxxxxxx> +From: Example <from@xxxxxxxxxxx> +To: to@xxxxxxxxxxx +Cc: A <author@xxxxxxxxxxx>, One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx +Subject: [PATCH 1/1] Second. +Date: DATE-STRING +Message-Id: MESSAGE-ID-STRING +X-Mailer: X-MAILER-STRING + +Result: OK +EOF + +test_expect_success '--suppress-cc=sob' ' + test_suppression sob +' + +cat >expected-suppress-bodycc <<\EOF +0001-Second.patch +(mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' +(mbox) Adding cc: One <one@xxxxxxxxxxx> from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +(mbox) Adding cc: two@xxxxxxxxxxx from line 'Cc: One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx' +(body) Adding cc: C O Mitter <committer@xxxxxxxxxxx> from line 'Signed-off-by: C O Mitter <committer@xxxxxxxxxxx>' +Dry-OK. Log says: +Server: relay.example.com +MAIL FROM:<from@xxxxxxxxxxx> +RCPT TO:<to@xxxxxxxxxxx>,<author@xxxxxxxxxxx>,<one@xxxxxxxxxxx>,<two@xxxxxxxxxxx>,<committer@xxxxxxxxxxx> +From: Example <from@xxxxxxxxxxx> +To: to@xxxxxxxxxxx +Cc: A <author@xxxxxxxxxxx>, One <one@xxxxxxxxxxx>, two@xxxxxxxxxxx, C O Mitter <committer@xxxxxxxxxxx> +Subject: [PATCH 1/1] Second. +Date: DATE-STRING +Message-Id: MESSAGE-ID-STRING +X-Mailer: X-MAILER-STRING + +Result: OK +EOF + +test_expect_success '--suppress-cc=bodycc' ' + test_suppression bodycc +' + +cat >expected-suppress-cc <<\EOF +0001-Second.patch +(mbox) Adding cc: A <author@xxxxxxxxxxx> from line 'From: A <author@xxxxxxxxxxx>' +(body) Adding cc: C O Mitter <committer@xxxxxxxxxxx> from line 'Signed-off-by: C O Mitter <committer@xxxxxxxxxxx>' +Dry-OK. Log says: +Server: relay.example.com +MAIL FROM:<from@xxxxxxxxxxx> +RCPT TO:<to@xxxxxxxxxxx>,<author@xxxxxxxxxxx>,<committer@xxxxxxxxxxx> +From: Example <from@xxxxxxxxxxx> +To: to@xxxxxxxxxxx +Cc: A <author@xxxxxxxxxxx>, C O Mitter <committer@xxxxxxxxxxx> +Subject: [PATCH 1/1] Second. +Date: DATE-STRING +Message-Id: MESSAGE-ID-STRING +X-Mailer: X-MAILER-STRING + +Result: OK +EOF + +test_expect_success '--suppress-cc=cc' ' + test_suppression cc ' test_expect_success '--compose adds MIME for utf8 body' ' -- 1.6.2.rc0.287.g66074 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html