git-send-email --cc-cmd

This new option allows an arbitrary "cmd" to generate per patch
file specific "Cc:"s.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Joe Perches 2007-08-17 18:51:12 -07:00 committed by Junio C Hamano
parent a9ab2009db
commit 324a8bd0cf
2 changed files with 31 additions and 2 deletions

View File

@ -34,6 +34,12 @@ The --bcc option must be repeated for each user you want on the bcc list.
+ +
The --cc option must be repeated for each user you want on the cc list. The --cc option must be repeated for each user you want on the cc list.
--cc-cmd::
Specify a command to execute once per patch file which
should generate patch file specific "Cc:" entries.
Output of this command must be single email address per line.
Default is the value of 'sendemail.cccmd' configuration value.
--chain-reply-to, --no-chain-reply-to:: --chain-reply-to, --no-chain-reply-to::
If this is set, each email will be sent as a reply to the previous If this is set, each email will be sent as a reply to the previous
email sent. If disabled with "--no-chain-reply-to", all emails after email sent. If disabled with "--no-chain-reply-to", all emails after
@ -124,6 +130,9 @@ sendemail.aliasfiletype::
Format of the file(s) specified in sendemail.aliasesfile. Must be Format of the file(s) specified in sendemail.aliasesfile. Must be
one of 'mutt', 'mailrc', 'pine', or 'gnus'. one of 'mutt', 'mailrc', 'pine', or 'gnus'.
sendemail.cccmd::
Command to execute to generate per patch file specific "Cc:"s.
sendemail.bcc:: sendemail.bcc::
Email address (or alias) to always bcc. Email address (or alias) to always bcc.

View File

@ -46,6 +46,9 @@ Options:
--cc Specify an initial "Cc:" list for the entire series --cc Specify an initial "Cc:" list for the entire series
of emails. of emails.
--cc-cmd Specify a command to execute per file which adds
per file specific cc address entries
--bcc Specify a list of email addresses that should be Bcc: --bcc Specify a list of email addresses that should be Bcc:
on all the emails. on all the emails.
@ -157,13 +160,14 @@ if ($@) {
my ($quiet, $dry_run) = (0, 0); my ($quiet, $dry_run) = (0, 0);
# Variables with corresponding config settings # Variables with corresponding config settings
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc); my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
my %config_settings = ( my %config_settings = (
"thread" => [\$thread, 1], "thread" => [\$thread, 1],
"chainreplyto" => [\$chain_reply_to, 1], "chainreplyto" => [\$chain_reply_to, 1],
"suppressfrom" => [\$suppress_from, 0], "suppressfrom" => [\$suppress_from, 0],
"signedoffcc" => [\$signed_off_cc, 1], "signedoffcc" => [\$signed_off_cc, 1],
"cccmd" => [\$cc_cmd, ""],
); );
foreach my $setting (keys %config_settings) { foreach my $setting (keys %config_settings) {
@ -189,6 +193,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"smtp-server=s" => \$smtp_server, "smtp-server=s" => \$smtp_server,
"compose" => \$compose, "compose" => \$compose,
"quiet" => \$quiet, "quiet" => \$quiet,
"cc-cmd=s" => \$cc_cmd,
"suppress-from!" => \$suppress_from, "suppress-from!" => \$suppress_from,
"signed-off-cc|signed-off-by-cc!" => \$signed_off_cc, "signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
"dry-run" => \$dry_run, "dry-run" => \$dry_run,
@ -652,11 +657,26 @@ foreach my $t (@files) {
} }
} }
close F; close F;
if ($cc_cmd ne "") {
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;
push @cc, $c;
printf("(cc-cmd) Adding cc: %s from: '%s'\n",
$c, $cc_cmd) unless $quiet;
}
close F
or die "(cc-cmd) failed to close pipe to '$cc_cmd'";
}
if (defined $author) { if (defined $author) {
$message = "From: $author\n\n$message"; $message = "From: $author\n\n$message";
} }
send_message(); send_message();
# set up for the next message # set up for the next message