* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 6:01 [PATCH] git-send-email: Add --suppress-all-from option David Brown
@ 2007-12-21 11:05 ` Joel Becker
2007-12-21 11:14 ` Brian Swetland
` (3 subsequent siblings)
4 siblings, 0 replies; 17+ messages in thread
From: Joel Becker @ 2007-12-21 11:05 UTC (permalink / raw)
To: David Brown; +Cc: git
On Thu, Dec 20, 2007 at 10:01:00PM -0800, David Brown wrote:
> Sometimes, it is useful to be able to send a patch to a third party
s/Sometimes/Most of the time/g
> without the author of the patch being copied on the message. An
> common example would be an internal discussion at a company to ask if
> a particular patch should be applied. Some environments may even have
> policy against such mail being sent outside of the company.
>
> Add the --suppress-all-from/--no-suppress-all-from options to avoid
> sending patches to the patch author, even if different from the
> sender. Add the sendemail.suppressallfrom config option to allow this
> to have a different default.
>
> Signed-off-by: David Brown <git@davidb.org>
Please-dog-yes: Joel Becker <jlbec@evilplan.org>
> ---
> Documentation/git-send-email.txt | 7 +++++++
> git-send-email.perl | 9 ++++++++-
> 2 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
> index f0bd285..5d06264 100644
> --- a/Documentation/git-send-email.txt
> +++ b/Documentation/git-send-email.txt
> @@ -117,6 +117,13 @@ The --cc option must be repeated for each user you want on the cc list.
> Default is the value of 'sendemail.suppressfrom' configuration value;
> if that is unspecified, default to --no-suppress-from.
>
> +--suppress-all-from, --no-suppress-all-from::
> + If this is set, do not add the From: address to the cc: list,
> + even if it is different than the person sending the email.
> + Default is the value of the 'sendemail.suppressallfrom'
> + configuration value; if that is unspecified, default to
> + -no-suppress-all-from.
> +
> --thread, --no-thread::
> If this is set, the In-Reply-To header will be set on each email sent.
> If disabled with "--no-thread", no emails will have the In-Reply-To
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 248d035..80265b5 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -90,6 +90,9 @@ Options:
>
> --suppress-from Suppress sending emails to yourself. Defaults to off.
>
> + --suppress-all-from Never automatically send to a patch author.
> + Defaults to off.
> +
> --thread Specify that the "In-Reply-To:" header should be set on all
> emails. Defaults to on.
>
> @@ -174,7 +177,8 @@ if ($@) {
> my ($quiet, $dry_run) = (0, 0);
>
> # Variables with corresponding config settings
> -my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
> +my ($thread, $chain_reply_to, $suppress_from, $suppress_all_from);
> +my ($signed_off_cc, $cc_cmd);
> my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_authpass, $smtp_ssl);
> my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
>
> @@ -182,6 +186,7 @@ my %config_bool_settings = (
> "thread" => [\$thread, 1],
> "chainreplyto" => [\$chain_reply_to, 1],
> "suppressfrom" => [\$suppress_from, 0],
> + "suppressallfrom" => [\$suppress_all_from, 0],
> "signedoffcc" => [\$signed_off_cc, 1],
> "smtpssl" => [\$smtp_ssl, 0],
> );
> @@ -218,6 +223,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
> "quiet" => \$quiet,
> "cc-cmd=s" => \$cc_cmd,
> "suppress-from!" => \$suppress_from,
> + "suppress-all-from!" => \$suppress_all_from,
> "signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
> "dry-run" => \$dry_run,
> "envelope-sender=s" => \$envelope_sender,
> @@ -700,6 +706,7 @@ foreach my $t (@files) {
> $subject = $1;
>
> } elsif (/^(Cc|From):\s+(.*)$/) {
> + next if ($suppress_all_from);
> if (unquote_rfc2047($2) eq $sender) {
> next if ($suppress_from);
> }
> --
> 1.5.3.7
>
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Life's Little Instruction Book #456
"Send your loved one flowers. Think of a reason later."
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 6:01 [PATCH] git-send-email: Add --suppress-all-from option David Brown
2007-12-21 11:05 ` Joel Becker
@ 2007-12-21 11:14 ` Brian Swetland
2007-12-21 17:43 ` Junio C Hamano
` (2 subsequent siblings)
4 siblings, 0 replies; 17+ messages in thread
From: Brian Swetland @ 2007-12-21 11:14 UTC (permalink / raw)
To: David Brown; +Cc: git
[David Brown <git@davidb.org>]
> Sometimes, it is useful to be able to send a patch to a third party
> without the author of the patch being copied on the message. An
> common example would be an internal discussion at a company to ask if
> a particular patch should be applied. Some environments may even have
> policy against such mail being sent outside of the company.
>
> Add the --suppress-all-from/--no-suppress-all-from options to avoid
> sending patches to the patch author, even if different from the
> sender. Add the sendemail.suppressallfrom config option to allow this
> to have a different default.
>
> Signed-off-by: David Brown <git@davidb.org>
Yes-Please: Brian Swetland <swetland@google.com>
This has caused me some pain previously, and just earlier today I
received an internal patch mail from somebody at another company who
almost certainly did not intend to cc me.
Brian
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 6:01 [PATCH] git-send-email: Add --suppress-all-from option David Brown
2007-12-21 11:05 ` Joel Becker
2007-12-21 11:14 ` Brian Swetland
@ 2007-12-21 17:43 ` Junio C Hamano
2007-12-21 19:21 ` Joel Becker
2007-12-21 22:37 ` David Brown
2007-12-24 19:01 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
2007-12-24 21:36 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
4 siblings, 2 replies; 17+ messages in thread
From: Junio C Hamano @ 2007-12-21 17:43 UTC (permalink / raw)
To: David Brown; +Cc: git
David Brown <git@davidb.org> writes:
> Sometimes, it is useful to be able to send a patch to a third party
> without the author of the patch being copied on the message.
I would agree with the cause, but not necessarily with the
execution.
> +--suppress-all-from, --no-suppress-all-from::
> + If this is set, do not add the From: address to the cc: list,
> + even if it is different than the person sending the email.
> + Default is the value of the 'sendemail.suppressallfrom'
> + configuration value; if that is unspecified, default to
> + -no-suppress-all-from.
The option name feels as if it is somehow affecting From: but
this is all about recipients. It needs to be named better.
Even more importantly, git-send-email has too many places that
pick up additional recipients. I doubt --suppress-foo to
suppress one such source "foo" is sustainable. We should try to
clean up the mess, not adding to it.
So let's analyze the current situation first. It seems that we
currently pick up the list of recipients from the following
places:
* obviously, --to command line;
* mbox Cc: header lines;
* mbox From: header lines;
* lots-of-email first line
* $cc_cmd output;
* Signed-off-by: lines in body;
* Cc: lines in body;
The --no-signed-off-cc option is about omitting the last two
from the recipients. We do not have a way to squelch other
sources of extra recipients, hence the need for your patch.
The --suppress-from option is about not giving an extra copy to
the sender. It is "suppress from-address from the recipient
list", so the option name makes sense.
Your --suppress-all-from, from a cursory read of your patch,
omits only mbox Cc: and From: line recipients -- it is far from
"all", isn't it? --signed-off-cc defaults to true so you would
need to suppress that at least to call it "all".
A cleaner approach might be:
- introduce a helper function add_to_recipients that take \@cc,
$recipient and the "source class". Make this function
responsible for not adding the sender to the list
(i.e. --suppress-from, which is currently checked
everywhere), and for not adding recipients from specified
classes of sources, like this:
sub add_to_recipients {
my ($cc, $source, $recipient) = @_;
return 0 if ($suppress_from and $sender eq $recipient);
return 0 if ($suppressed_recipient_source{$source});
push @$cc, $recipient;
return 1;
}
Instead of returning 1 unconditionally, it might make sense
to omit pushing duplicate here and to return 0 when
$recipient was already in @$cc.
- adjust the places where "push @cc" happens to use the above
helper; the existing suppress logic in the callers can and
should be removed as the add_to_recipients will be
responsible for it, like this (an example for cc-cmd part):
if (defined $cc_cmd) {
open(F, "$cc_cmd $t |")
or die "(cc-cmd) Could not execute '$cc_cmd'";
while(<F>) {
my $c = $_;
$c =~ s/^\s*//g;
$c =~ s/\n$//g;
- next if ($c eq $sender and $suppress_from);
- push @cc, $c;
+ next if (!add_to_recipients(\@cc, 'cccmd', $c));
printf("(cc-cmd) Adding cc: %s from: '%s'\n",
$c, $cc_cmd) unless $quiet;
}
- define a global %suppressed_recipient_source hash to be used
in add_to_recipients(). The existing --no-signed-off-cc is
about adding two sources to this hash.
- make the %suppressed_recipient_source configurable from the
command line and repository configuration.
As to the "recipient source" classes, I think they can be
categorized as:
* 'cc', to cover mbox Cc: header, lots-of-email first line, and
Cc: lines in body;
* 'sob', to cover Signed-off-by: lines in body;
* 'cccmd', to cover $cc_cmd output;
Hmm?
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 17:43 ` Junio C Hamano
@ 2007-12-21 19:21 ` Joel Becker
2007-12-22 0:55 ` Theodore Tso
2007-12-21 22:37 ` David Brown
1 sibling, 1 reply; 17+ messages in thread
From: Joel Becker @ 2007-12-21 19:21 UTC (permalink / raw)
To: Junio C Hamano; +Cc: David Brown, git
On Fri, Dec 21, 2007 at 09:43:48AM -0800, Junio C Hamano wrote:
> The option name feels as if it is somehow affecting From: but
> this is all about recipients. It needs to be named better.
>
> Even more importantly, git-send-email has too many places that
> pick up additional recipients. I doubt --suppress-foo to
> suppress one such source "foo" is sustainable. We should try to
> clean up the mess, not adding to it.
Yay, even better that we're going to evaluate the sucker (I was
just complaining about this yesterday to someone, so how apropos that it
comes up on-list).
First and foremost, I think git-send-email should not default to
anything. It was quite a surprise, the first time I tried to use it, to
discover I had to add two options to ~/.gitconfig just for sane
behavior. Never mind that I couldn't suppress the author-cc. I think
that a naive "git send-email --to bob@bob.com foo.patch" should only go
to bob, period.
We can then add ways to auto-cc. I don't mind typing the extra
bits. Heck, we could even define a --review that does what is currently
the default - cc-everyone-who-might-care-as-we-go-upstream.
Joel
--
Life's Little Instruction Book #99
"Think big thoughts, but relish small pleasures."
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 19:21 ` Joel Becker
@ 2007-12-22 0:55 ` Theodore Tso
0 siblings, 0 replies; 17+ messages in thread
From: Theodore Tso @ 2007-12-22 0:55 UTC (permalink / raw)
To: Joel Becker; +Cc: Junio C Hamano, David Brown, git
On Fri, Dec 21, 2007 at 11:21:20AM -0800, Joel Becker wrote:
> Yay, even better that we're going to evaluate the sucker (I was
> just complaining about this yesterday to someone, so how apropos that it
> comes up on-list).
> First and foremost, I think git-send-email should not default to
> anything. It was quite a surprise, the first time I tried to use it, to
> discover I had to add two options to ~/.gitconfig just for sane
> behavior. Never mind that I couldn't suppress the author-cc. I think
> that a naive "git send-email --to bob@bob.com foo.patch" should only go
> to bob, period.
> We can then add ways to auto-cc. I don't mind typing the extra
> bits. Heck, we could even define a --review that does what is currently
> the default - cc-everyone-who-might-care-as-we-go-upstream.
Where e-mail addresses are used by default by git-send-email should
probably be a git configuration option (and then we will need to
document the heck out of this when we change it, so this is probably a
git-1.6.0 thing), so projects can tell all of their contributors if
they need to make changes in their config file for the proper
defaults. Right now the defaults are more or less perfect for the
Linux Kernel development processes, but other folks might not like
them. On the flip side, just removing all of the current auto-cc's
would be awfully inconvenient for the Linux kernel development
community.
- Ted
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-all-from option.
2007-12-21 17:43 ` Junio C Hamano
2007-12-21 19:21 ` Joel Becker
@ 2007-12-21 22:37 ` David Brown
1 sibling, 0 replies; 17+ messages in thread
From: David Brown @ 2007-12-21 22:37 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Fri, Dec 21, 2007 at 09:43:48AM -0800, Junio C Hamano wrote:
>David Brown <git@davidb.org> writes:
>
>> Sometimes, it is useful to be able to send a patch to a third party
>> without the author of the patch being copied on the message.
>
>I would agree with the cause, but not necessarily with the
>execution.
Ok. I will look into the overall cleanup, but probably not until this
weekend.
Dave
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-21 6:01 [PATCH] git-send-email: Add --suppress-all-from option David Brown
` (2 preceding siblings ...)
2007-12-21 17:43 ` Junio C Hamano
@ 2007-12-24 19:01 ` David Brown
2007-12-24 21:03 ` Joel Becker
2007-12-24 21:36 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
4 siblings, 1 reply; 17+ messages in thread
From: David Brown @ 2007-12-24 19:01 UTC (permalink / raw)
To: git
There are a few options to git-send-email to suppress the automatic
generation of 'Cc' fields: --suppress-from, and --signed-off-cc. However,
there are other times that git-send-email automatically includes Cc'd
recipients. This is not desirable for all development environments.
Add a new option --suppress-cc, which can be specified one or more times to
list the categories of auto-cc fields that should be suppressed. If not
specified, it defaults to values to give the same behavior as specified
by --suppress-from, and --signed-off-cc. The categories are:
self - patch sender. Same as --suppress-from.
author - patch author.
cc - cc lines mentioned in the patch.
cccmd - avoid running the cccmd.
sob - signed off by lines.
Signed-off-by: David Brown <git@davidb.org>
---
I tried to generalize as suggested in Junio's email, but it just didn't fit
well with the decision tree in the code.
What bothers me most about this change is that --signed-of-cc
and --suppress-from are silently ignored if --suppress-cc is given, either
on the command line, or in the config.
Documentation/git-send-email.txt | 13 +++++++++++++
git-send-email.perl | 34 ++++++++++++++++++++++++++++++----
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index f0bd285..432f336 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -70,6 +70,7 @@ The --cc option must be repeated for each user you want on the cc list.
cc list.
Default is the value of 'sendemail.signedoffcc' configuration value;
if that is unspecified, default to --signed-off-by-cc.
+ Note that this has no effect if --suppress-cc is given.
--quiet::
Make git-send-email less verbose. One line per email should be
@@ -116,6 +117,18 @@ The --cc option must be repeated for each user you want on the cc list.
If this is set, do not add the From: address to the cc: list.
Default is the value of 'sendemail.suppressfrom' configuration value;
if that is unspecified, default to --no-suppress-from.
+ Note that this has no effect if --suppress-cc is given.
+
+--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, 'sob' will avoid including
+ anyone mentioned in Signed-off-by lines, and 'cccmd' will avoid
+ running the --cc-cmd.
+ 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.
--thread, --no-thread::
If this is set, the In-Reply-To header will be set on each email sent.
diff --git a/git-send-email.perl b/git-send-email.perl
index e47994a..cb9adf2 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -88,6 +88,11 @@ Options:
--smtp-ssl If set, connects to the SMTP server using SSL.
+ --suppress-cc Suppress the specified category of auto-CC. The category
+ can be one of 'author' for the patch author, 'self' to
+ avoid copying yourself, 'sob' for Signed-off-by lines,
+ and 'cccmd' for the output of the cccmd.
+
--suppress-from Suppress sending emails to yourself. Defaults to off.
--thread Specify that the "In-Reply-To:" header should be set on all
@@ -177,6 +182,7 @@ my ($quiet, $dry_run) = (0, 0);
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_authpass, $smtp_ssl);
my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
+my (@suppress_cc);
my %config_bool_settings = (
"thread" => [\$thread, 1],
@@ -196,6 +202,7 @@ my %config_settings = (
"aliasfiletype" => \$aliasfiletype,
"bcc" => \@bcclist,
"aliasesfile" => \@alias_files,
+ "suppresscc" => \@suppress_cc,
);
# Begin by accumulating all the variables (defined above), that we will end up
@@ -218,6 +225,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"quiet" => \$quiet,
"cc-cmd=s" => \$cc_cmd,
"suppress-from!" => \$suppress_from,
+ "suppress-cc=s" => \@suppress_cc,
"signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
"dry-run" => \$dry_run,
"envelope-sender=s" => \$envelope_sender,
@@ -262,6 +270,20 @@ foreach my $setting (values %config_bool_settings) {
${$setting->[0]} = $setting->[1] unless (defined (${$setting->[0]}));
}
+# Set CC suppressions
+my(%suppress_cc);
+if (@suppress_cc) {
+ foreach my $entry (@suppress_cc) {
+ die "Unknown --suppress-cc field: '$entry'\n"
+ unless $entry =~ /^(cccmd|cc|author|self|sob)$/;
+ $suppress_cc{$entry} = 1;
+ }
+} else {
+ # Convert the old-style options.
+ $suppress_cc{'self'} = 1 if $suppress_from;
+ $suppress_cc{'sob'} = 1 unless $signed_off_cc;
+}
+
my ($repoauthor) = $repo->ident_person('author');
my ($repocommitter) = $repo->ident_person('committer');
@@ -701,11 +723,14 @@ foreach my $t (@files) {
} elsif (/^(Cc|From):\s+(.*)$/) {
if (unquote_rfc2047($2) eq $sender) {
- next if ($suppress_from);
+ next if ($suppress_cc{'self'});
}
elsif ($1 eq 'From') {
($author, $author_encoding)
= unquote_rfc2047($2);
+ next if ($suppress_cc{'author'});
+ } else {
+ next if ($suppress_cc{'cc'});
}
printf("(mbox) Adding cc: %s from line '%s'\n",
$2, $_) unless $quiet;
@@ -732,7 +757,7 @@ foreach my $t (@files) {
# line 2 = subject
# So let's support that, too.
$input_format = 'lots';
- if (@cc == 0) {
+ if (@cc == 0 && !$suppress_cc{'cc'}) {
printf("(non-mbox) Adding cc: %s from line '%s'\n",
$_, $_) unless $quiet;
@@ -750,9 +775,10 @@ foreach my $t (@files) {
} else {
$message .= $_;
if (/^(Signed-off-by|Cc): (.*)$/i && $signed_off_cc) {
+ next if ($suppress_cc{'sob'});
my $c = $2;
chomp $c;
- next if ($c eq $sender and $suppress_from);
+ next if ($c eq $sender and $suppress_cc{'self'});
push @cc, $c;
printf("(sob) Adding cc: %s from line '%s'\n",
$c, $_) unless $quiet;
@@ -761,7 +787,7 @@ foreach my $t (@files) {
}
close F;
- if (defined $cc_cmd) {
+ if (defined $cc_cmd && !$suppress_cc{'cccmd'}) {
open(F, "$cc_cmd $t |")
or die "(cc-cmd) Could not execute '$cc_cmd'";
while(<F>) {
--
1.5.3.7
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-24 19:01 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
@ 2007-12-24 21:03 ` Joel Becker
2007-12-24 21:26 ` [PATCH] git-send-email: Add --suppress-cc all David Brown
0 siblings, 1 reply; 17+ messages in thread
From: Joel Becker @ 2007-12-24 21:03 UTC (permalink / raw)
To: David Brown; +Cc: git
On Mon, Dec 24, 2007 at 11:01:42AM -0800, David Brown wrote:
> There are a few options to git-send-email to suppress the automatic
> generation of 'Cc' fields: --suppress-from, and --signed-off-cc. However,
> there are other times that git-send-email automatically includes Cc'd
> recipients. This is not desirable for all development environments.
>
> Add a new option --suppress-cc, which can be specified one or more times to
> list the categories of auto-cc fields that should be suppressed. If not
> specified, it defaults to values to give the same behavior as specified
> by --suppress-from, and --signed-off-cc. The categories are:
>
> self - patch sender. Same as --suppress-from.
> author - patch author.
> cc - cc lines mentioned in the patch.
> cccmd - avoid running the cccmd.
> sob - signed off by lines.
+ all - all of the above, thus only honoring '--to', '--cc', and
'--bcc'
Joel
--
"The nice thing about egotists is that they don't talk about other
people."
- Lucille S. Harper
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH] git-send-email: Add --suppress-cc all
2007-12-24 21:03 ` Joel Becker
@ 2007-12-24 21:26 ` David Brown
2007-12-24 21:59 ` Joel Becker
0 siblings, 1 reply; 17+ messages in thread
From: David Brown @ 2007-12-24 21:26 UTC (permalink / raw)
To: Joel Becker; +Cc: git
Add the 'all' option to --suppress-cc, allowing easier suppression of
everything.
Signed-off-by: David Brown <git@davidb.org>
---
On Mon, Dec 24, 2007 at 01:03:25PM -0800, Joel Becker wrote:
>+ all - all of the above, thus only honoring '--to', '--cc', and
> '--bcc'
I can squash this with the other patch if that would be cleaner.
Dave
Documentation/git-send-email.txt | 2 +-
git-send-email.perl | 11 ++++++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 432f336..fdfb56e 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -125,7 +125,7 @@ The --cc option must be repeated for each user you want on the cc list.
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.
+ 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.
diff --git a/git-send-email.perl b/git-send-email.perl
index cb9adf2..ef16824 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -275,7 +275,7 @@ my(%suppress_cc);
if (@suppress_cc) {
foreach my $entry (@suppress_cc) {
die "Unknown --suppress-cc field: '$entry'\n"
- unless $entry =~ /^(cccmd|cc|author|self|sob)$/;
+ unless $entry =~ /^(all|cccmd|cc|author|self|sob)$/;
$suppress_cc{$entry} = 1;
}
} else {
@@ -284,6 +284,15 @@ if (@suppress_cc) {
$suppress_cc{'sob'} = 1 unless $signed_off_cc;
}
+if ($suppress_cc{'all'}) {
+ foreach my $entry (qw (ccmd cc author self sob)) {
+ $suppress_cc{$entry} = 1;
+ }
+ delete $suppress_cc{'all'};
+}
+
+printf "Suppressions: %s\n", join(',', keys(%suppress_cc));
+
my ($repoauthor) = $repo->ident_person('author');
my ($repocommitter) = $repo->ident_person('committer');
--
1.5.3.7
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Add --suppress-cc all
2007-12-24 21:26 ` [PATCH] git-send-email: Add --suppress-cc all David Brown
@ 2007-12-24 21:59 ` Joel Becker
0 siblings, 0 replies; 17+ messages in thread
From: Joel Becker @ 2007-12-24 21:59 UTC (permalink / raw)
To: git
On Mon, Dec 24, 2007 at 01:26:48PM -0800, David Brown wrote:
> Add the 'all' option to --suppress-cc, allowing easier suppression of
> everything.
Thank you!
>
> Signed-off-by: David Brown <git@davidb.org>
> ---
> On Mon, Dec 24, 2007 at 01:03:25PM -0800, Joel Becker wrote:
>
>> + all - all of the above, thus only honoring '--to', '--cc', and
>> '--bcc'
>
> I can squash this with the other patch if that would be cleaner.
>
> Dave
>
> Documentation/git-send-email.txt | 2 +-
> git-send-email.perl | 11 ++++++++++-
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
> index 432f336..fdfb56e 100644
> --- a/Documentation/git-send-email.txt
> +++ b/Documentation/git-send-email.txt
> @@ -125,7 +125,7 @@ The --cc option must be repeated for each user you want on the cc list.
> 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.
> + 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.
> diff --git a/git-send-email.perl b/git-send-email.perl
> index cb9adf2..ef16824 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -275,7 +275,7 @@ my(%suppress_cc);
> if (@suppress_cc) {
> foreach my $entry (@suppress_cc) {
> die "Unknown --suppress-cc field: '$entry'\n"
> - unless $entry =~ /^(cccmd|cc|author|self|sob)$/;
> + unless $entry =~ /^(all|cccmd|cc|author|self|sob)$/;
> $suppress_cc{$entry} = 1;
> }
> } else {
> @@ -284,6 +284,15 @@ if (@suppress_cc) {
> $suppress_cc{'sob'} = 1 unless $signed_off_cc;
> }
> +if ($suppress_cc{'all'}) {
> + foreach my $entry (qw (ccmd cc author self sob)) {
> + $suppress_cc{$entry} = 1;
> + }
> + delete $suppress_cc{'all'};
> +}
> +
> +printf "Suppressions: %s\n", join(',', keys(%suppress_cc));
> +
> my ($repoauthor) = $repo->ident_person('author');
> my ($repocommitter) = $repo->ident_person('committer');
>
> --
> 1.5.3.7
>
--
"Can any of you seriously say the Bill of Rights could get through
Congress today? It wouldn't even get out of committee."
- F. Lee Bailey
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-21 6:01 [PATCH] git-send-email: Add --suppress-all-from option David Brown
` (3 preceding siblings ...)
2007-12-24 19:01 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
@ 2007-12-24 21:36 ` David Brown
2007-12-25 21:04 ` Junio C Hamano
4 siblings, 1 reply; 17+ messages in thread
From: David Brown @ 2007-12-24 21:36 UTC (permalink / raw)
To: git; +Cc: Joel Becker
There are a few options to git-send-email to suppress the automatic
generation of 'Cc' fields: --suppress-from, and --signed-off-cc.
However, there are other times that git-send-email automatically
includes Cc'd recipients. This is not desirable for all development
environments.
Add a new option --suppress-cc, which can be specified one or more
times to list the categories of auto-cc fields that should be
suppressed. If not specified, it defaults to values to give the same
behavior as specified by --suppress-from, and --signed-off-cc. The
categories are:
self - patch sender. Same as --suppress-from.
author - patch author.
cc - cc lines mentioned in the patch.
cccmd - avoid running the cccmd.
sob - signed off by lines.
all - all non-explicit recipients
Signed-off-by: David Brown <git@davidb.org>
---
Adds the 'all' category suggested by Joel Becker.
Documentation/git-send-email.txt | 13 +++++++++++
git-send-email.perl | 42 ++++++++++++++++++++++++++++++++++---
2 files changed, 51 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index f0bd285..fdfb56e 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -70,6 +70,7 @@ The --cc option must be repeated for each user you want on the cc list.
cc list.
Default is the value of 'sendemail.signedoffcc' configuration value;
if that is unspecified, default to --signed-off-by-cc.
+ Note that this has no effect if --suppress-cc is given.
--quiet::
Make git-send-email less verbose. One line per email should be
@@ -116,6 +117,18 @@ The --cc option must be repeated for each user you want on the cc list.
If this is set, do not add the From: address to the cc: list.
Default is the value of 'sendemail.suppressfrom' configuration value;
if that is unspecified, default to --no-suppress-from.
+ Note that this has no effect if --suppress-cc is given.
+
+--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, '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.
--thread, --no-thread::
If this is set, the In-Reply-To header will be set on each email sent.
diff --git a/git-send-email.perl b/git-send-email.perl
index e47994a..00a7ffc 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -88,6 +88,12 @@ Options:
--smtp-ssl If set, connects to the SMTP server using SSL.
+ --suppress-cc Suppress the specified category of auto-CC. The category
+ can be one of 'author' for the patch author, 'self' to
+ avoid copying yourself, 'sob' for Signed-off-by lines,
+ 'cccmd' for the output of the cccmd, or 'all' to suppress
+ all of these.
+
--suppress-from Suppress sending emails to yourself. Defaults to off.
--thread Specify that the "In-Reply-To:" header should be set on all
@@ -177,6 +183,7 @@ my ($quiet, $dry_run) = (0, 0);
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_authpass, $smtp_ssl);
my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
+my (@suppress_cc);
my %config_bool_settings = (
"thread" => [\$thread, 1],
@@ -196,6 +203,7 @@ my %config_settings = (
"aliasfiletype" => \$aliasfiletype,
"bcc" => \@bcclist,
"aliasesfile" => \@alias_files,
+ "suppresscc" => \@suppress_cc,
);
# Begin by accumulating all the variables (defined above), that we will end up
@@ -218,6 +226,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"quiet" => \$quiet,
"cc-cmd=s" => \$cc_cmd,
"suppress-from!" => \$suppress_from,
+ "suppress-cc=s" => \@suppress_cc,
"signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
"dry-run" => \$dry_run,
"envelope-sender=s" => \$envelope_sender,
@@ -262,6 +271,27 @@ foreach my $setting (values %config_bool_settings) {
${$setting->[0]} = $setting->[1] unless (defined (${$setting->[0]}));
}
+# Set CC suppressions
+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)$/;
+ $suppress_cc{$entry} = 1;
+ }
+} else {
+ # Convert the old-style options.
+ $suppress_cc{'self'} = 1 if $suppress_from;
+ $suppress_cc{'sob'} = 1 unless $signed_off_cc;
+}
+
+if ($suppress_cc{'all'}) {
+ foreach my $entry (qw (ccmd cc author self sob)) {
+ $suppress_cc{$entry} = 1;
+ }
+ delete $suppress_cc{'all'};
+}
+
my ($repoauthor) = $repo->ident_person('author');
my ($repocommitter) = $repo->ident_person('committer');
@@ -701,11 +731,14 @@ foreach my $t (@files) {
} elsif (/^(Cc|From):\s+(.*)$/) {
if (unquote_rfc2047($2) eq $sender) {
- next if ($suppress_from);
+ next if ($suppress_cc{'self'});
}
elsif ($1 eq 'From') {
($author, $author_encoding)
= unquote_rfc2047($2);
+ next if ($suppress_cc{'author'});
+ } else {
+ next if ($suppress_cc{'cc'});
}
printf("(mbox) Adding cc: %s from line '%s'\n",
$2, $_) unless $quiet;
@@ -732,7 +765,7 @@ foreach my $t (@files) {
# line 2 = subject
# So let's support that, too.
$input_format = 'lots';
- if (@cc == 0) {
+ if (@cc == 0 && !$suppress_cc{'cc'}) {
printf("(non-mbox) Adding cc: %s from line '%s'\n",
$_, $_) unless $quiet;
@@ -750,9 +783,10 @@ foreach my $t (@files) {
} else {
$message .= $_;
if (/^(Signed-off-by|Cc): (.*)$/i && $signed_off_cc) {
+ next if ($suppress_cc{'sob'});
my $c = $2;
chomp $c;
- next if ($c eq $sender and $suppress_from);
+ next if ($c eq $sender and $suppress_cc{'self'});
push @cc, $c;
printf("(sob) Adding cc: %s from line '%s'\n",
$c, $_) unless $quiet;
@@ -761,7 +795,7 @@ foreach my $t (@files) {
}
close F;
- if (defined $cc_cmd) {
+ if (defined $cc_cmd && !$suppress_cc{'cccmd'}) {
open(F, "$cc_cmd $t |")
or die "(cc-cmd) Could not execute '$cc_cmd'";
while(<F>) {
--
1.5.3.7
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-24 21:36 ` [PATCH] git-send-email: Generalize auto-cc recipient mechanism David Brown
@ 2007-12-25 21:04 ` Junio C Hamano
2007-12-26 3:39 ` David Brown
2007-12-26 3:56 ` David Brown
0 siblings, 2 replies; 17+ messages in thread
From: Junio C Hamano @ 2007-12-25 21:04 UTC (permalink / raw)
To: David Brown; +Cc: git, Joel Becker
David Brown <git@davidb.org> writes:
> ...
> self - patch sender. Same as --suppress-from.
> author - patch author.
> cc - cc lines mentioned in the patch.
> cccmd - avoid running the cccmd.
> sob - signed off by lines.
> all - all non-explicit recipients
>
> Signed-off-by: David Brown <git@davidb.org>
> ...
> What bothers me most about this change is that --signed-of-cc
> and --suppress-from are silently ignored if --suppress-cc is given, either
> on the command line, or in the config.
The order in which various variables are set in the current code
before your patch is like this:
* my ($var) introduces them -- they are undefined at the
beginning;
* GetOptions() may set them to explicit values;
* read_config(), first for the specific sendemail identity and
then for the generic ones, fill the ones that are still
undefined;
* the built-in default from %config_bool_settings are used to
fill the ones that are still undefined at this point;
Now, I think you can build on top of the above by adding the
following after that sequence:
* fill %suppress_cc with explicit @suppress_cc GetOptions and
read_config() read;
* if the --suppress-from and/or --signed-off-by-cc, either from
GetOptions() or from read_config() are given, make them
override what @suppress_cc says. So giving --suppress-cc=all
and --signed-off-by-cc at the same time will still send cc to
people who signed off the patch (because these old-style ones
are more specific).
Perhaps something like this (untested, of course!) patch on top
of yours.
git-send-email.perl | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/git-send-email.perl b/git-send-email.perl
index 1f03d12..cde5ffb 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -188,8 +188,8 @@ my (@suppress_cc);
my %config_bool_settings = (
"thread" => [\$thread, 1],
"chainreplyto" => [\$chain_reply_to, 1],
- "suppressfrom" => [\$suppress_from, 0],
- "signedoffcc" => [\$signed_off_cc, 1],
+ "suppressfrom" => [\$suppress_from, undef],
+ "signedoffcc" => [\$signed_off_cc, undef],
"smtpssl" => [\$smtp_ssl, 0],
);
@@ -279,18 +279,20 @@ if (@suppress_cc) {
unless $entry =~ /^(all|cccmd|cc|author|self|sob)$/;
$suppress_cc{$entry} = 1;
}
-} else {
- # Convert the old-style options.
- $suppress_cc{'self'} = 1 if $suppress_from;
- $suppress_cc{'sob'} = 1 unless $signed_off_cc;
}
-
if ($suppress_cc{'all'}) {
foreach my $entry (qw (ccmd cc author self sob)) {
$suppress_cc{$entry} = 1;
}
delete $suppress_cc{'all'};
}
+# If explicit old-style ones are specified, they trump supress-cc
+if (defined $suppress_from) {
+ $suppress_cc{'self'} = $suppress_from;
+}
+if (defined $signed_off_cc) {
+ $suppress_cc{'sob'} = !$signed_off_cc;
+}
my ($repoauthor) = $repo->ident_person('author');
my ($repocommitter) = $repo->ident_person('committer');
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-25 21:04 ` Junio C Hamano
@ 2007-12-26 3:39 ` David Brown
2007-12-26 3:56 ` David Brown
1 sibling, 0 replies; 17+ messages in thread
From: David Brown @ 2007-12-26 3:39 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Joel Becker
On Tue, Dec 25, 2007 at 01:04:54PM -0800, Junio C Hamano wrote:
>+# If explicit old-style ones are specified, they trump supress-cc
>+if (defined $suppress_from) {
>+ $suppress_cc{'self'} = $suppress_from;
>+}
>+if (defined $signed_off_cc) {
>+ $suppress_cc{'sob'} = !$signed_off_cc;
>+}
This changes the default behavior to --no-signed-off-cc, if nothing is
specified. I'll see if I can add something that will set that if no
suppress-cc's are set.
Patch to follow shortly.
David
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-25 21:04 ` Junio C Hamano
2007-12-26 3:39 ` David Brown
@ 2007-12-26 3:56 ` David Brown
2007-12-26 4:54 ` Sean
1 sibling, 1 reply; 17+ messages in thread
From: David Brown @ 2007-12-26 3:56 UTC (permalink / raw)
To: git; +Cc: Joel Becker, Junio C Hamano
There are a few options to git-send-email to suppress the automatic
generation of 'Cc' fields: --suppress-from, and --signed-off-cc.
However, there are other times that git-send-email automatically
includes Cc'd recipients. This is not desirable for all development
environments.
Add a new option --suppress-cc, which can be specified one or more
times to list the categories of auto-cc fields that should be
suppressed. If not specified, it defaults to values to give the same
behavior as specified by --suppress-from, and --signed-off-cc. The
categories are:
self - patch sender. Same as --suppress-from.
author - patch author.
cc - cc lines mentioned in the patch.
cccmd - avoid running the cccmd.
sob - signed off by lines.
all - all non-explicit recipients
Signed-off-by: David Brown <git@davidb.org>
---
I've now added changes similar to those suggested by Junio Hamano so
that signed-off-cc and suppress-from override values set by
signed-off-by.
Dave
Documentation/git-send-email.txt | 11 +++++++
git-send-email.perl | 56 +++++++++++++++++++++++++++++++++-----
2 files changed, 60 insertions(+), 7 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index f0bd285..3dcea86 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -117,6 +117,17 @@ The --cc option must be repeated for each user you want on the cc list.
Default is the value of 'sendemail.suppressfrom' configuration value;
if that is unspecified, default to --no-suppress-from.
+--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, '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.
+
--thread, --no-thread::
If this is set, the In-Reply-To header will be set on each email sent.
If disabled with "--no-thread", no emails will have the In-Reply-To
diff --git a/git-send-email.perl b/git-send-email.perl
index e47994a..a4cf4a9 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -88,6 +88,12 @@ Options:
--smtp-ssl If set, connects to the SMTP server using SSL.
+ --suppress-cc Suppress the specified category of auto-CC. The category
+ can be one of 'author' for the patch author, 'self' to
+ avoid copying yourself, 'sob' for Signed-off-by lines,
+ 'cccmd' for the output of the cccmd, or 'all' to suppress
+ all of these.
+
--suppress-from Suppress sending emails to yourself. Defaults to off.
--thread Specify that the "In-Reply-To:" header should be set on all
@@ -177,12 +183,13 @@ my ($quiet, $dry_run) = (0, 0);
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_authpass, $smtp_ssl);
my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
+my (@suppress_cc);
my %config_bool_settings = (
"thread" => [\$thread, 1],
"chainreplyto" => [\$chain_reply_to, 1],
- "suppressfrom" => [\$suppress_from, 0],
- "signedoffcc" => [\$signed_off_cc, 1],
+ "suppressfrom" => [\$suppress_from, undef],
+ "signedoffcc" => [\$signed_off_cc, undef],
"smtpssl" => [\$smtp_ssl, 0],
);
@@ -196,6 +203,7 @@ my %config_settings = (
"aliasfiletype" => \$aliasfiletype,
"bcc" => \@bcclist,
"aliasesfile" => \@alias_files,
+ "suppresscc" => \@suppress_cc,
);
# Begin by accumulating all the variables (defined above), that we will end up
@@ -218,6 +226,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"quiet" => \$quiet,
"cc-cmd=s" => \$cc_cmd,
"suppress-from!" => \$suppress_from,
+ "suppress-cc=s" => \@suppress_cc,
"signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
"dry-run" => \$dry_run,
"envelope-sender=s" => \$envelope_sender,
@@ -262,6 +271,35 @@ foreach my $setting (values %config_bool_settings) {
${$setting->[0]} = $setting->[1] unless (defined (${$setting->[0]}));
}
+# Set CC suppressions
+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)$/;
+ $suppress_cc{$entry} = 1;
+ }
+}
+
+if ($suppress_cc{'all'}) {
+ foreach my $entry (qw (ccmd cc author self sob)) {
+ $suppress_cc{$entry} = 1;
+ }
+ delete $suppress_cc{'all'};
+}
+
+# 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_cc if defined $signed_off_cc;
+
+# Debugging, print out the suppressions.
+if (0) {
+ print "suppressions:\n";
+ foreach my $entry (keys %suppress_cc) {
+ printf " %-5s -> $suppress_cc{$entry}\n", $entry;
+ }
+}
+
my ($repoauthor) = $repo->ident_person('author');
my ($repocommitter) = $repo->ident_person('committer');
@@ -701,11 +739,14 @@ foreach my $t (@files) {
} elsif (/^(Cc|From):\s+(.*)$/) {
if (unquote_rfc2047($2) eq $sender) {
- next if ($suppress_from);
+ next if ($suppress_cc{'self'});
}
elsif ($1 eq 'From') {
($author, $author_encoding)
= unquote_rfc2047($2);
+ next if ($suppress_cc{'author'});
+ } else {
+ next if ($suppress_cc{'cc'});
}
printf("(mbox) Adding cc: %s from line '%s'\n",
$2, $_) unless $quiet;
@@ -732,7 +773,7 @@ foreach my $t (@files) {
# line 2 = subject
# So let's support that, too.
$input_format = 'lots';
- if (@cc == 0) {
+ if (@cc == 0 && !$suppress_cc{'cc'}) {
printf("(non-mbox) Adding cc: %s from line '%s'\n",
$_, $_) unless $quiet;
@@ -749,10 +790,11 @@ foreach my $t (@files) {
}
} else {
$message .= $_;
- if (/^(Signed-off-by|Cc): (.*)$/i && $signed_off_cc) {
+ if (/^(Signed-off-by|Cc): (.*)$/i) {
+ next if ($suppress_cc{'sob'});
my $c = $2;
chomp $c;
- next if ($c eq $sender and $suppress_from);
+ next if ($c eq $sender and $suppress_cc{'self'});
push @cc, $c;
printf("(sob) Adding cc: %s from line '%s'\n",
$c, $_) unless $quiet;
@@ -761,7 +803,7 @@ foreach my $t (@files) {
}
close F;
- if (defined $cc_cmd) {
+ if (defined $cc_cmd && !$suppress_cc{'cccmd'}) {
open(F, "$cc_cmd $t |")
or die "(cc-cmd) Could not execute '$cc_cmd'";
while(<F>) {
--
1.5.3.7
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-26 3:56 ` David Brown
@ 2007-12-26 4:54 ` Sean
2007-12-26 5:32 ` David Brown
0 siblings, 1 reply; 17+ messages in thread
From: Sean @ 2007-12-26 4:54 UTC (permalink / raw)
To: David Brown; +Cc: git, Joel Becker, Junio C Hamano
On Tue, 25 Dec 2007 19:56:29 -0800
David Brown <git@davidb.org> wrote:
> Add a new option --suppress-cc, which can be specified one or more
> times to list the categories of auto-cc fields that should be
> suppressed. If not specified, it defaults to values to give the same
> behavior as specified by --suppress-from, and --signed-off-cc. The
> categories are:
>
> self - patch sender. Same as --suppress-from.
> author - patch author.
> cc - cc lines mentioned in the patch.
> cccmd - avoid running the cccmd.
> sob - signed off by lines.
> all - all non-explicit recipients
>
Hi Dave,
It's great to see you're taking care of this issue, it's one that i've tripped over
a few times. If your patch is accepted as-is, i think it's an improvement.
But i wonder about the case where a user has "sendemail.suppresscc = all" in their
~/.gitconfig. For the occasion when they do want to cc the author of
a patch, what do they do? The above UI seems to lack a way to enable a cc option
that has been disabled by default.
Cheers,
Sean
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH] git-send-email: Generalize auto-cc recipient mechanism.
2007-12-26 4:54 ` Sean
@ 2007-12-26 5:32 ` David Brown
0 siblings, 0 replies; 17+ messages in thread
From: David Brown @ 2007-12-26 5:32 UTC (permalink / raw)
To: Sean; +Cc: git, Joel Becker, Junio C Hamano
On Tue, Dec 25, 2007 at 11:54:38PM -0500, Sean wrote:
>But i wonder about the case where a user has "sendemail.suppresscc = all" in their
>~/.gitconfig. For the occasion when they do want to cc the author of
>a patch, what do they do? The above UI seems to lack a way to enable a cc option
>that has been disabled by default.
Well, in that instance, --no-suppress-from would override that, if I did it
right. Perhaps we could add an unsuppress-cc option, but then the whole
thing is starting to get more complicated than I think it really needs to
be.
My suggestion would be to keep this patch as is, and if the people using it
decide they want the override option, we/I can figure out how to add it.
Dave
^ permalink raw reply [flat|nested] 17+ messages in thread