On Wed, Mar 26, 2008 at 10:30:33AM +0200, Teemu Likonen wrote: > I had missed the --cover-letter option completely. It may be useful too. > I'm still trying to find the best way to send pathces. If I send intro > message with real MUA I either need to wait for the message to show up > on a mailing list or check my sent-mail folder to find the Message-Id. > Once I know the Message-Id I can send the actual patch series with 'git > send-email' as replies to the intro message. Well, this is OK. That is how I used to do it; now I use --cover-letter (which you probably missed because it is brand new in the upcoming 1.5.5). > > I think that is sensible. Want to try adding it on top of my patches? > I'd like to, but I can only do sh/bash stuff and possibly some > copy-and-paste programming with other scripting languages. You'd end up > fixing my code anyway, sorry. OK, I will add it to the end of my long todo. Out of curiosity, do you actually want something besides utf-8, or is this just to make us feel feature complete? > As you noticed, I accidentally sent you a couple of test emails because > send-email CCed mails to patches' author (I think). Now I have set > "suppresscc = all" and "suppressfrom = true" which should prevent such > accidents. Shouldn't these be defaults? In my opinion it's generally the > best practice to always explicitly define what parties emails are sent > to. I think this is probably a good change. But it is a behavior change, which means it is definitely out during the -rc freeze. And it may or may not need a warning period for users. > There is unmatching bracket in your patch: Argh, yes. I _thought_ I ran it successfully through the test script, but obviously I failed to 'make' and just tested the previous version. It works fine with the bracket removed. For reference, the fixed-up patch is below. -- >8 -- send-email: rfc2047-quote subject lines with non-ascii characters We always use 'utf-8' as the encoding, since we currently have no way of getting the information from the user. This also refactors the quoting of recipient names, since both processes can share the rfc2047 quoting code. Signed-off-by: Jeff King <peff@xxxxxxxx> --- git-send-email.perl | 19 +++++++++++++++++-- t/t9001-send-email.sh | 15 +++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index 7c4f06c..d0f9d4a 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -536,6 +536,14 @@ EOT if (!$in_body && /^MIME-Version:/i) { $need_8bit_cte = 0; } + if (!$in_body && /^Subject: ?(.*)/i) { + my $subject = $1; + $_ = "Subject: " . + ($subject =~ /[^[:ascii:]]/ ? + quote_rfc2047($subject) : + $subject) . + "\n"; + } print C2 $_; } close(C); @@ -626,6 +634,14 @@ sub unquote_rfc2047 { return wantarray ? ($_, $encoding) : $_; } +sub quote_rfc2047 { + local $_ = shift; + my $encoding = shift || 'utf-8'; + s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg; + s/(.*)/=\?$encoding\?q\?$1\?=/; + return $_; +} + # use the simplest quoting being able to handle the recipient sub sanitize_address { @@ -643,8 +659,7 @@ sub sanitize_address # rfc2047 is needed if a non-ascii char is included if ($recipient_name =~ /[^[:ascii:]]/) { - $recipient_name =~ s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg; - $recipient_name =~ s/(.*)/=\?utf-8\?q\?$1\?=/; + $recipient_name = quote_rfc2047($recipient_name); } # double quotes are needed if specials or CTLs are included diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index e222c49..a4bcd28 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -210,4 +210,19 @@ test_expect_success '--compose respects user mime type' ' ! grep "^Content-Type: text/plain; charset=utf-8" msgtxt1 ' +test_expect_success '--compose adds MIME for utf8 subject' ' + clean_fake_sendmail && + echo y | \ + GIT_EDITOR=$(pwd)/fake-editor \ + GIT_SEND_EMAIL_NOTTY=1 \ + git send-email \ + --compose --subject utf8-sübjëct \ + --from="Example <nobody@xxxxxxxxxxx>" \ + --to=nobody@xxxxxxxxxxx \ + --smtp-server="$(pwd)/fake.sendmail" \ + $patches && + grep "^fake edit" msgtxt1 && + grep "^Subject: =?utf-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1 +' + test_done -- 1.5.5.rc1.133.g360d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html