From: Brian Inglis Date: Sat, 18 Feb 2023 17:11:02 GMT Subject: Re: [PATCH] format.attach: allow empty value to disable multi-part messages Message-ID: In-Reply-To: Thanks Junio, I'll hope and watch for it to get added, and test if/when released. -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry On 2023-02-17 16:33, Junio C Hamano wrote: > 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 > --- > > * This is a backward incompatible change, so we may not take it in the > end. We'll see. > > Documentation/config/format.txt | 3 ++- > builtin/log.c | 2 ++ > t/t4014-format-patch.sh | 18 ++++++++++++++++++ > 3 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/Documentation/config/format.txt b/Documentation/config/format.txt > index 3bd78269e2..73678d88a1 100644 > --- a/Documentation/config/format.txt > +++ b/Documentation/config/format.txt > @@ -3,7 +3,8 @@ format.attach:: > 'format-patch'. The value can also be a double quoted string > which will enable attachments as the default and set the > value as the boundary. See the --attach option in > - linkgit:git-format-patch[1]. > + linkgit:git-format-patch[1]. To countermand an earlier > + value, set it to an empty string. > > format.from:: > Provides the default value for the `--from` option to format-patch. > diff --git a/builtin/log.c b/builtin/log.c > index 04412dd9c9..a70fba198f 100644 > --- a/builtin/log.c > +++ b/builtin/log.c > @@ -1007,6 +1007,8 @@ static int git_format_config(const char *var, const char *value, void *cb) > if (!strcmp(var, "format.attach")) { > if (value && *value) > default_attach = xstrdup(value); > + else if (value && !*value) > + FREE_AND_NULL(default_attach); > else > default_attach = xstrdup(git_version_string); > return 0; > diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh > index 012f155e10..f3313b8c58 100755 > --- a/t/t4014-format-patch.sh > +++ b/t/t4014-format-patch.sh > @@ -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 &&