From: Jay Soffian <jaysoffian@gmail.com>
To: git@vger.kernel.org
Cc: Jay Soffian <jaysoffian@gmail.com>,
Ryan Anderson <ryan@michonline.com>,
gitster@pobox.com, Thomas Rast <trast@student.ethz.ch>,
Jeff King <peff@peff.net>
Subject: [PATCH 3/3 v2] send-email: --suppress-cc improvements
Date: Sat, 14 Feb 2009 00:37:03 -0500 [thread overview]
Message-ID: <1234589823-67610-1-git-send-email-jaysoffian@gmail.com> (raw)
In-Reply-To: <1234583491-61260-4-git-send-email-jaysoffian@gmail.com>
From: Jay Soffian <jaysoffian@gmail.com>
Commit 656482830ddc4a4e2af132fabb118a25190439c2 added the --suppress-cc
option. However, it made --suppress-cc=sob suppress both SOB lines and
body Cc lines (but not header Cc lines), which seems contrary to how
it is named.
After this commit, 'sob' suppresses only SOB lines and --suppress-cc
takes two additional values:
* 'body' suppresses both SOB and body Cc lines (i.e. what 'sob'
used to do).
* 'bodycc' suppresses body Cc lines, but not header Cc lines.
For backwards compatibility, --no-signed-off-by-cc, acts like 'body'.
Also update the documentation and add a few tests.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
Sorry, please ignore the previous 3/3, it had an obvious breakage;
--suppress-cc=body was causing then entire message body not to be read
in at all.
Documentation/git-send-email.txt | 14 ++++++++------
git-send-email.perl | 23 ++++++++++++++++-------
t/t9001-send-email.sh | 38 ++++++++++++++++++++++++++++++++++++--
3 files changed, 60 insertions(+), 15 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index ff4aeff..d6af035 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -166,12 +166,14 @@ Automating
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, 'sob' will avoid including
- anyone mentioned in Signed-off-by lines, and 'cccmd' will avoid
- running the --cc-cmd. '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 'sob' if --no-signed-off-cc is specified.
+ 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.
--[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 2a3e3e8..23a55e2 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -68,7 +68,7 @@ git send-email [options] <file | directory | rev-list options >
Automating:
--identity <str> * Use the sendemail.<id> options.
--cc-cmd <str> * Email Cc: via `<str> \$patch_path`
- --suppress-cc <str> * author, self, sob, cccmd, all.
+ --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-]suppress-from * Send to self. Default off.
@@ -319,21 +319,28 @@ 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)$/;
+ unless $entry =~ /^(all|cccmd|cc|author|self|sob|body|bodycc)$/;
$suppress_cc{$entry} = 1;
}
}
if ($suppress_cc{'all'}) {
- foreach my $entry (qw (ccmd cc author self sob)) {
+ foreach my $entry (qw (ccmd cc author self sob body bodycc)) {
$suppress_cc{$entry} = 1;
}
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;
-$suppress_cc{'sob'} = !$signed_off_by_cc if defined $signed_off_by_cc;
+# 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;
# Debugging, print out the suppressions.
if (0) {
@@ -1007,14 +1014,16 @@ foreach my $t (@files) {
# Now parse the message body
while(<F>) {
$message .= $_;
+ next if $suppress_cc{'body'};
if (/^(Signed-off-by|Cc): (.*)$/i) {
- next if ($suppress_cc{'sob'});
chomp;
- my $c = $2;
+ my ($what, $c) = ($1, $2);
chomp $c;
+ next if $suppress_cc{'sob'} and $what =~ /Signed-off-by/i;
+ next if $suppress_cc{'bodycc'} and $what =~ /Cc/i;
next if ($c eq $sender and $suppress_cc{'self'});
push @cc, $c;
- printf("(sob) Adding cc: %s from line '%s'\n",
+ printf("(body) Adding cc: %s from line '%s'\n",
$c, $_) unless $quiet;
}
}
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index da54835..d7766f9 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -32,11 +32,11 @@ clean_fake_sendmail() {
}
test_expect_success 'Extract patches' '
- patches=`git format-patch --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1`
+ patches=`git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1`
'
test_expect_success 'Send patches' '
- git send-email --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
+ git send-email --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
'
cat >expected <<\EOF
@@ -74,6 +74,7 @@ EOF
test_expect_success 'Show all headers' '
git send-email \
--dry-run \
+ --suppress-cc=sob \
--from="Example <from@example.com>" \
--to=to@example.com \
--cc=cc@example.com \
@@ -195,6 +196,7 @@ test_expect_success 'sendemail.cc set' '
git config sendemail.cc cc@example.com &&
git send-email \
--dry-run \
+ --suppress-cc=sob \
--from="Example <from@example.com>" \
--to=to@example.com \
--smtp-server relay.example.com \
@@ -230,6 +232,38 @@ test_expect_success 'sendemail.cc unset' '
git config --unset sendemail.cc &&
git send-email \
--dry-run \
+ --suppress-cc=sob \
+ --from="Example <from@example.com>" \
+ --to=to@example.com \
+ --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
+'
+
+cat >expected-show-all-headers <<\EOF
+0001-Second.patch
+Dry-OK. Log says:
+Server: relay.example.com
+MAIL FROM:<from@example.com>
+RCPT TO:<to@example.com>
+From: Example <from@example.com>
+To: to@example.com
+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=all' '
+ git send-email \
+ --dry-run \
+ --suppress-cc=all \
--from="Example <from@example.com>" \
--to=to@example.com \
--smtp-server relay.example.com \
--
1.6.2.rc0.238.g0c1fe
next prev parent reply other threads:[~2009-02-14 5:38 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-13 23:05 [PATCH] send-email: handle multiple Cc addresses when reading mbox message Jay Soffian
2009-02-13 23:32 ` Thomas Rast
2009-02-13 23:39 ` Jay Soffian
2009-02-13 23:44 ` Jay Soffian
2009-02-14 3:51 ` Jay Soffian
2009-02-14 16:57 ` Thomas Rast
2009-02-14 3:51 ` [PATCH 1/3] send-email: correct logic error with --suppress-cc=cc Jay Soffian
2009-02-14 6:21 ` [PATCH 1/3 v2] " Jay Soffian
2009-02-14 6:52 ` Junio C Hamano
2009-02-14 7:15 ` Jay Soffian
2009-02-14 7:35 ` Junio C Hamano
2009-02-14 3:51 ` [PATCH 2/3] send-email: don't call unquote_rfc2047 unnecessarily Jay Soffian
2009-02-14 5:50 ` Jay Soffian
2009-02-14 3:51 ` [PATCH 3/3] send-email: --suppress-cc improvements Jay Soffian
2009-02-14 5:37 ` Jay Soffian [this message]
2009-02-14 6:36 ` [PATCH 3/3 v2] " Junio C Hamano
2009-02-14 17:06 ` [PATCH v3] " Thomas Rast
2009-02-14 17:06 ` [Interdiff " Thomas Rast
2009-02-14 22:21 ` [PATCH " Thomas Rast
2009-02-15 10:47 ` Junio C Hamano
2009-02-14 0:31 ` [PATCH] send-email: handle multiple Cc addresses when reading mbox message Jeff King
2009-02-14 0:42 ` Jay Soffian
2009-02-14 3:37 ` Jeff King
2009-02-14 8:16 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1234589823-67610-1-git-send-email-jaysoffian@gmail.com \
--to=jaysoffian@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=ryan@michonline.com \
--cc=trast@student.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).