git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] format-patch: make format.noprefix a boolean

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 19, 2026, 18:03 UTC
Message-ID
<xmqqy0ko626g.fsf@gitster.g>
In-Reply-To
<format.noprefix_boolean.39d@msgid.xyz>
kristofferhaugsbakk@fastmail.com writes:
Show 32 quoted lines
> From: Kristoffer Haugsbakk <code@khaugsbakk.name>
>
> The config `format.noprefix` was added in 8d5213de (format-patch: add
> format.noprefix option, 2023-03-09) to support no-prefix on paths.
> That was immediately after making git-format-patch(1) not respect
> `diff.noprefix`.[1]
>
> The intent was to mirror `diff.noprefix`. But this config was
> unintentionally[2] implemented by enabling no-prefix if any kind of
> value is set.
>
> † 1: c169af8f (format-patch: do not respect diff.noprefix, 2023-03-09)
> † 2: https://lore.kernel.org/all/20260211073553.GA1867915@coredump.intra.peff.net/
>
> Let’s indeed mirror `diff.noprefix` by treating it as a boolean.
>
> This is a breaking change. And as far as breaking changes go it is
> pretty benign:
>
> • The documentation claims that this config is equivalent to
>   `diff.noprefix`; this is just a bug fix if the documentation is
>   what defines the application interface
> • Only users with non-boolean values will run into problems when we
>   try to parse it as a boolean. But what would (1) make them suspect
>   they could do that in the first place, and (2) have motivated them to
>   do it?
> • Users who have set this to `false` and expect that to mean *enable
>   format.noprefix* (current behavior) will now have the opposite
>   experience. Which is not a reasonable setup.
>
> Let’s only offer a breaking change fig leaf by hinting about the
> previous behavior before dying.

One case that is often problematic is what happens to those who use the same set of configuration variables with different versions of Git, before and after such behaviour change. But I do not think this is such a bad thing. The only reason why they had this variable set (to any value, or to a value-less true) with existing versions of Git is because they wanted to omit the prefixes, so when a new version of Git dies with "Heh, 'nothanks' is not a valid boolean value", they can edit the configuration variable to "1".

And from that point of view, I think the hint given together with the "bad boolean" error can and should be phrased a bit more strongly, i.e.,

Show 10 quoted lines
> +		format_no_prefix = git_parse_maybe_bool(value);
> +		if (format_no_prefix < 0) {
> +			int status = die_message(
> +				_("bad boolean config value '%s' for '%s'"),
> +				value, var);
> +			fprintf(stderr,
> +				_("hint: '%s' used to accept any value but "
> +				  "now only\n"
> +				  "hint: accepts boolean values, like '%s'\n"),
> +				var, "diff.noprefix");

The target audience of this (hint) is those who have set this variable to a non-boolean strring from the existing version of Git, and the only thing they meant to express was "I do not want any prefix", so "we used to accept any value as true, but now accepts only valid boolean values", perhaps? That would nudge those who wrote "[format] noprefix = NoThanks" to rewrite it correctly to "true" or "1", and not "no".

This is a related tangent, but shouldn't this use advise() without configuration? There is no need to allocate an advice_type and use advise_if_enabled(), because correcting a malformed configuration is an action enough to squelch the message.

> +			exit(status);
> +		}
>  		return 0;
>  	}
Previous: kristofferhaugsbakk@fastmail.comNext: Kristoffer Haugsbakk
Message 3 of 16 in “format-patch: make boolean and mention in diff-options.adoc”
  1. 0/2 format-patch: make boolean and mention in diff-options.adockristofferhaugsbakk@fastmail.com, Feb 18, 2026
  2. 1/2 format-patch: make format.noprefix a booleankristofferhaugsbakk@fastmail.com, Feb 18, 2026
  3. Junio C HamanoFeb 19, 2026
  4. Kristoffer HaugsbakkFeb 23, 2026
  5. Jeff KingFeb 20, 2026
  6. 2/2 doc: diff-options.adoc: show format.noprefix for format-patchkristofferhaugsbakk@fastmail.com, Feb 18, 2026
  7. Junio C HamanoFeb 19, 2026
  8. 0/2 format-patch: make boolean and mention in diff-options.adockristofferhaugsbakk@fastmail.com, Feb 23, 2026
  9. 1/2 format-patch: make format.noprefix a booleankristofferhaugsbakk@fastmail.com, Feb 23, 2026
  10. 2/2 doc: diff-options.adoc: show format.noprefix for format-patchkristofferhaugsbakk@fastmail.com, Feb 23, 2026
  11. Jean-Noël AvilaFeb 27, 2026
  12. Junio C HamanoFeb 27, 2026
  13. kristofferhaugsbakk@fastmail.comFeb 28, 2026
  14. Jean-Noël AVILAFeb 28, 2026
  15. doc: diff-options.adoc: make *.noprefix split translatablekristofferhaugsbakk@fastmail.com, Mar 1, 2026
  16. Junio C HamanoMar 2, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.