Hi,
I'm looking for a way to suppress certain Cc: fields that are normally
automatically added for addresses mentioned in Cc: lines found in patches.
In particular, the kernel rules for marking patches for stable release
inclusion wants users to add a "Cc: stable@xxxxxxxxxx" line in the patch
itself but to not actually send a copy of that patch to that address. It
will be picked automatically once the patch was applied upstream.
I couldn't find a proper way to do that with git send-email, so I dare
to come up with a patch proposal. Is that acceptable or is there any
better way (which I'm not aware about) to achive this?
Thanks,
Daniel
From f1a17a4fbc0373283696cb560afff3afa05c2e8f Mon Sep 17 00:00:00 2001
From: Daniel Mack <zonque@xxxxxxxxx>
Date: Sun, 7 Aug 2011 22:16:00 +0200
Subject: [PATCH] send-email: Allow email addresses and domains as
--suppress-cc options
Signed-off-by: Daniel Mack <zonque@xxxxxxxxx>
---
Documentation/git-send-email.txt | 10 +++++++---
git-send-email.perl | 12 +++++++++++-
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 327233c..5966abb 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -233,9 +233,9 @@ Automating
cc list. Default is the value of 'sendemail.signedoffbycc' configuration
value; if that is unspecified, default to --signed-off-by-cc.
---suppress-cc=<category>::
- Specify an additional category of recipients to suppress the
- auto-cc of:
+--suppress-cc=<category|address|domain>::
+ Specify an additional category, email address or domain of recipients
+ to suppress the auto-cc for. Possible categories are:
+
--
- 'author' will avoid including the patch author
@@ -251,6 +251,10 @@ Automating
- 'all' will suppress all auto cc values.
--
+
+If a full email address is given, auto-cc will be suppressed for this particular
+address. This also works for entire domains if the parameter starts with the '@'
+sign. All email addresses in that domain will hence be ignored by auto-cc.
++
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.
diff --git a/git-send-email.perl b/git-send-email.perl
index 98ab33a..22813e5 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -374,7 +374,7 @@ 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|.*@.*)$/;
$suppress_cc{$entry} = 1;
}
}
@@ -1213,6 +1213,11 @@ foreach my $t (@files) {
} else {
next if ($suppress_cc{'cc'});
}
+ next if ($suppress_cc{$addr});
+ if ($addr =~ /^(.+)(@.+)$/) {
+ my $domain = $2;
+ next if $suppress_cc{$domain};
+ }
printf("(mbox) Adding cc: %s from line '%s'\n",
$addr, $_) unless $quiet;
push @cc, $addr;
@@ -1261,6 +1266,11 @@ foreach my $t (@files) {
next if $suppress_cc{'sob'} and $what =~ /Signed-off-by/i;
next if $suppress_cc{'bodycc'} and $what =~ /Cc/i;
}
+ next if ($suppress_cc{$c});
+ if ($c =~ /^(.+)(@.+)$/) {
+ my $domain = $2;
+ next if $suppress_cc{$domain};
+ }
push @cc, $c;
printf("(body) Adding cc: %s from line '%s'\n",
$c, $_) unless $quiet;
--
1.7.6