git-send-email: use compose-encoding for Subject
authorKrzysztof Mazur <krzysiek@podlesie.net>
Mon, 22 Oct 2012 12:41:48 +0000 (14:41 +0200)
committerJeff King <peff@peff.net>
Thu, 25 Oct 2012 10:00:07 +0000 (06:00 -0400)
The commit "git-send-email: introduce compose-encoding" introduced
the compose-encoding option to specify the introduction email encoding
(--compose option), but the email Subject encoding was still hardcoded
to UTF-8.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>
git-send-email.perl
t/t9001-send-email.sh

index 107e814b67239030f35ad910a02ed8828bc4671c..adcb4e397b76187a3364456f1511e19a1cb742fb 100755 (executable)
@@ -636,15 +636,15 @@ EOT
        my $need_8bit_cte = file_has_nonascii($compose_filename);
        my $in_body = 0;
        my $summary_empty = 1;
+       if (!defined $compose_encoding) {
+               $compose_encoding = "UTF-8";
+       }
        while(<$c>) {
                next if m/^GIT:/;
                if ($in_body) {
                        $summary_empty = 0 unless (/^\n$/);
                } elsif (/^\n$/) {
                        $in_body = 1;
-                       if (!defined $compose_encoding) {
-                               $compose_encoding = "UTF-8";
-                       }
                        if ($need_8bit_cte) {
                                print $c2 "MIME-Version: 1.0\n",
                                         "Content-Type: text/plain; ",
@@ -658,7 +658,7 @@ EOT
                        my $subject = $initial_subject;
                        $_ = "Subject: " .
                                ($subject =~ /[^[:ascii:]]/ ?
-                                quote_rfc2047($subject) :
+                                quote_rfc2047($subject, $compose_encoding) :
                                 $subject) .
                                "\n";
                } elsif (/^In-Reply-To:\s*(.+)\s*$/i) {
index 265ae0463f188a2ee9b0a0e172215eec72857be6..89fcedaa33728d57efdd494b0bc8f372fc7dc7ae 100755 (executable)
@@ -909,6 +909,20 @@ test_expect_success $PREREQ '--compose-encoding overrides sendemail.composeencod
        grep "^Content-Type: text/plain; charset=iso-8859-2" msgtxt1
 '
 
+test_expect_success $PREREQ '--compose-encoding adds correct MIME for subject' '
+       clean_fake_sendmail &&
+         GIT_EDITOR="\"$(pwd)/fake-editor\"" \
+         git send-email \
+         --compose-encoding iso-8859-2 \
+         --compose --subject utf8-sübjëct \
+         --from="Example <nobody@example.com>" \
+         --to=nobody@example.com \
+         --smtp-server="$(pwd)/fake.sendmail" \
+         $patches &&
+       grep "^fake edit" msgtxt1 &&
+       grep "^Subject: =?iso-8859-2?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1
+'
+
 test_expect_success $PREREQ 'detects ambiguous reference/file conflict' '
        echo master > master &&
        git add master &&