Browse Source
Earlier, the callchain from pretty_print_commit() down to pp_title_line() had an unwarranted assumption that the presense of "after_subject" parameter, means the caller has already output MIME headers for attachments. The parameter's primary purpose is to give extra header lines the caller wants to place after pp_title_line() generates the "Subject: " line. This assumption does not hold when the user used the format.header configuration variable to pass extra headers, and caused a message with non-ASCII character to lack proper MIME headers (e.g. 8-bit CTE header). The earlier logic also failed to suppress duplicated MIME headers when "format-patch -s --attach" is asked for and the signer's name demanded 8-bit clean transport. This patch fixes the logic by introducing a separate need_8bit_cte parameter passed down the callchain. This can have one of these values: -1 : we've already done MIME crap and we do not want to add extra header to say this is 8bit in pp_title_line(); 0 : we haven't done MIME and we have not seen anything that is 8bit yet; 1 : we haven't done MIME and we have seen something that is 8bit; pp_title_line() must add MIME header. It adds two tests by Jeff King who independently diagnosed this issue. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Junio C Hamano
17 years ago
5 changed files with 57 additions and 16 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='format-patch mime headers and extra headers do not conflict' |
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'create commit with utf-8 body' ' |
||||
echo content >file && |
||||
git add file && |
||||
git commit -m one && |
||||
echo more >>file && |
||||
git commit -a -m "two |
||||
|
||||
utf-8 body: ñ" |
||||
' |
||||
|
||||
test_expect_success 'patch has mime headers' ' |
||||
rm -f 0001-two.patch && |
||||
git format-patch HEAD^ && |
||||
grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch |
||||
' |
||||
|
||||
test_expect_success 'patch has mime and extra headers' ' |
||||
rm -f 0001-two.patch && |
||||
git config format.headers "x-foo: bar" && |
||||
git format-patch HEAD^ && |
||||
grep -i "x-foo: bar" 0001-two.patch && |
||||
grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue