Change the scope of the $cc variable as it is not needed outside of send_message.
[gitweb.git] / git-send-email.perl
index a71a192e4d752b7d79493321df5f82fbdd682dc7..ad83009e236c4b8be2fa0b4204ed340c0e205de5 100755 (executable)
@@ -65,8 +65,8 @@ sub usage {
                   Defaults to on.
 
    --no-signed-off-cc Suppress the automatic addition of email addresses
-                 that appear in a Signed-off-by: line, to the cc: list.
-                Note: Using this option is not recommended.
+                 that appear in Signed-off-by: or Cc: lines to the cc:
+                 list.  Note: Using this option is not recommended.
 
    --smtp-server  If set, specifies the outgoing SMTP server to use.
                   Defaults to localhost.
@@ -77,6 +77,8 @@ sub usage {
    --quiet       Make git-send-email less verbose.  One line per email
                   should be all that is output.
 
+   --dry-run     Do everything except actually send the emails.
+
 EOT
        exit(1);
 }
@@ -149,6 +151,16 @@ sub format_2822_time {
        $term = new FakeTerm "$@: going non-interactive";
 }
 
+my $def_chain = $repo->config_boolean('sendemail.chainreplyto');
+if ($def_chain and $def_chain eq 'false') {
+    $chain_reply_to = 0;
+}
+
+@bcclist = $repo->config('sendemail.bcc');
+if (!@bcclist or !$bcclist[0]) {
+    @bcclist = ();
+}
+
 # Begin by accumulating all the variables (defined above), that we will end up
 # needing, first, from the command line:
 
@@ -367,7 +379,7 @@ sub expand_aliases {
 }
 
 # Variables we set as part of the loop over files
-our ($message_id, $cc, %mail, $subject, $reply_to, $references, $message);
+our ($message_id, %mail, $subject, $reply_to, $references, $message);
 
 sub extract_valid_address {
        my $address = shift;
@@ -408,7 +420,6 @@ sub make_message_id
 
 
 
-$cc = "";
 $time = time - scalar $#files;
 
 sub unquote_rfc2047 {
@@ -431,7 +442,8 @@ sub send_message
            $gitversion = Git::version();
        }
 
-       my ($author_name) = ($from =~ /^(.*?)\s+</);
+       my $cc = join(", ", unique_email_list(@cc));
+my ($author_name) = ($from =~ /^(.*?)\s+</);
        if ($author_name && $author_name =~ /\./ && $author_name !~ /^".*"$/) {
                my ($name, $addr) = ($from =~ /^(.*?)(\s+<.*)/);
                $from = "\"$name\"$addr";
@@ -453,15 +465,15 @@ sub send_message
                $header .= join("\n", @xh) . "\n";
        }
 
+       my @sendmail_parameters = ('-i', map { extract_valid_address($_) } @recipients);
+
        if ($dry_run) {
                # We don't want to send the email.
        } elsif ($smtp_server =~ m#^/#) {
                my $pid = open my $sm, '|-';
                defined $pid or die $!;
                if (!$pid) {
-                       exec($smtp_server,'-i',
-                            map { extract_valid_address($_) }
-                            @recipients) or die $!;
+                       exec($smtp_server, @sendmail_parameters) or die $!;
                }
                print $sm "$header\n$message";
                close $sm or die $?;
@@ -476,13 +488,15 @@ sub send_message
                $smtp->ok or die "Failed to send $subject\n".$smtp->message;
        }
        if ($quiet) {
-               printf "Sent %s\n", $subject;
+               printf (($dry_run ? "Dry-" : "")."Sent %s\n", $subject);
        } else {
-               print "OK. Log says:\nDate: $date\n";
+               print (($dry_run ? "Dry-" : "")."OK. Log says:\nDate: $date\n");
                if ($smtp) {
                        print "Server: $smtp_server\n";
+                       print "MAIL FROM: $from\n";
+                       print "RCPT TO: ".join(',',@recipients)."\n";
                } else {
-                       print "Sendmail: $smtp_server\n";
+                       print "Sendmail: $smtp_server ".join(' ',@sendmail_parameters)."\n";
                }
                print "From: $from\nSubject: $subject\nCc: $cc\nTo: $to\n\n";
                if ($smtp) {
@@ -562,8 +576,8 @@ sub send_message
                        }
                } else {
                        $message .=  $_;
-                       if (/^Signed-off-by: (.*)$/i && !$no_signed_off_cc) {
-                               my $c = $1;
+                       if (/^(Signed-off-by|Cc): (.*)$/i && !$no_signed_off_cc) {
+                               my $c = $2;
                                chomp $c;
                                push @cc, $c;
                                printf("(sob) Adding cc: %s from line '%s'\n",
@@ -577,7 +591,6 @@ sub send_message
                $message = "From: $author_not_sender\n\n$message";
        }
 
-       $cc = join(", ", unique_email_list(@cc));
 
        send_message();
 
@@ -585,7 +598,7 @@ sub send_message
        if ($chain_reply_to || !defined $reply_to || length($reply_to) == 0) {
                $reply_to = $message_id;
                if (length $references > 0) {
-                       $references .= " $message_id";
+                       $references .= "\n $message_id";
                } else {
                        $references = "$message_id";
                }