format-patch: learn format.forceInBodyFrom configuration variable

As the need to use the "--force-in-body-from" option primarily is
tied to which mailing list the mails go to (and get their From:
address mangled), it is likely that a user who needs to use this
option once to interact with their upstream project needs to use it
for all patches they send out.

Add a configuration variable, suitable for setting in the local
configuration file per repository, for this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2022-08-29 14:38:37 -07:00
parent 34bc1b1045
commit d5fc07df68
4 changed files with 34 additions and 0 deletions

View File

@ -15,6 +15,10 @@ format.from::
different. If set to a non-boolean value, format-patch uses that
value instead of your committer identity. Defaults to false.
format.forceInBodyFrom::
Provides the default value for the `--[no-]force-in-body-from`
option to format-patch. Defaults to false.
format.numbered::
A boolean which can enable or disable sequence numbers in patch
subjects. It defaults to "auto" which enables it only if there

View File

@ -283,6 +283,8 @@ feeding the result to `git send-email`.
the in-body "From:" is added even when the sender and the
author have the same name and address, which may help if the
mailing list software mangles the sender's identity.
Defaults to the value of the `format.forceInBodyFrom`
configuration variable.
--add-header=<header>::
Add an arbitrary header to the email headers. This is in addition

View File

@ -1007,6 +1007,10 @@ static int git_format_config(const char *var, const char *value, void *cb)
from = NULL;
return 0;
}
if (!strcmp(var, "format.forceinbodyfrom")) {
force_in_body_from = git_config_bool(var, value);
return 0;
}
if (!strcmp(var, "format.notes")) {
int b = git_parse_maybe_bool(value);
if (b < 0)

View File

@ -1413,6 +1413,30 @@ test_expect_success 'with --force-in-body-from, redundant in-body from is kept'
test_cmp expect patch.head
'
test_expect_success 'format.forceInBodyFrom, equivalent to --force-in-body-from' '
git -c format.forceInBodyFrom=yes format-patch \
-1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
'
test_expect_success 'format.forceInBodyFrom, equivalent to --force-in-body-from' '
git -c format.forceInBodyFrom=yes format-patch --no-force-in-body-from \
-1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
'
test_expect_success 'in-body headers trigger content encoding' '
test_env GIT_AUTHOR_NAME="éxötìc" test_commit exotic &&
test_when_finished "git reset --hard HEAD^" &&