format.attach: allow empty value to disable multi-part messages

When a lower precedence configuration file (e.g. /etc/gitconfig)
defines format.attach in any way, there was no way to disable it in
a more specific configuration file (e.g. $HOME/.gitconfig).

Change the behaviour of setting it to an empty string.  It used to
mean that the result is still a multipart message with only dashes
used as a multi-part separator, but now it resets the setting to
the default (which would be to give an inline patch, unless other
command line options are in effect).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2023-02-17 15:33:37 -08:00
parent d9d677b2d8
commit 50bebf98d9
3 changed files with 22 additions and 1 deletions

View File

@ -2281,6 +2281,24 @@ test_expect_success 'format-patch --attach cover-letter only is non-multipart' '
test_line_count = 1 output
'
test_expect_success 'format-patch with format.attach' '
test_when_finished "rm -fr patches" &&
separator=attachment-separator &&
test_config format.attach "$separator" &&
filename=$(git format-patch -o patches -1) &&
grep "^Content-Type: multipart/.*$separator" "$filename"
'
test_expect_success 'format-patch with format.attach=disabled' '
test_when_finished "rm -fr patches" &&
separator=attachment-separator &&
test_config_global format.attach "$separator" &&
test_config format.attach "" &&
filename=$(git format-patch -o patches -1) &&
# The output should not even declare content type for text/plain.
! grep "^Content-Type: multipart/" "$filename"
'
test_expect_success '-c format.mboxrd format-patch' '
sp=" " &&
cat >msg <<-INPUT_END &&