public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: kristofferhaugsbakk@fastmail.com
Cc: git@vger.kernel.org,  Kristoffer Haugsbakk <code@khaugsbakk.name>,
	peff@peff.net
Subject: Re: [PATCH 1/2] format-patch: make format.noprefix a boolean
Date: Thu, 19 Feb 2026 10:03:35 -0800	[thread overview]
Message-ID: <xmqqy0ko626g.fsf@gitster.g> (raw)
In-Reply-To: <format.noprefix_boolean.39d@msgid.xyz> (kristofferhaugsbakk@fastmail.com's message of "Wed, 18 Feb 2026 21:26:17 +0100")

kristofferhaugsbakk@fastmail.com writes:

> 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.,

> +		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;
>  	}

  reply	other threads:[~2026-02-19 18:03 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-18 20:26 [PATCH 0/2] format-patch: make boolean and mention in diff-options.adoc kristofferhaugsbakk
2026-02-18 20:26 ` [PATCH 1/2] format-patch: make format.noprefix a boolean kristofferhaugsbakk
2026-02-19 18:03   ` Junio C Hamano [this message]
2026-02-23 23:25     ` Kristoffer Haugsbakk
2026-02-20 12:28   ` Jeff King
2026-02-18 20:26 ` [PATCH 2/2] doc: diff-options.adoc: show format.noprefix for format-patch kristofferhaugsbakk
2026-02-19 18:10   ` Junio C Hamano
2026-02-23 23:30 ` [PATCH v2 0/2] format-patch: make boolean and mention in diff-options.adoc kristofferhaugsbakk
2026-02-23 23:30   ` [PATCH v2 1/2] format-patch: make format.noprefix a boolean kristofferhaugsbakk
2026-02-23 23:30   ` [PATCH v2 2/2] doc: diff-options.adoc: show format.noprefix for format-patch kristofferhaugsbakk
2026-02-27  9:57     ` Jean-Noël Avila
2026-02-27 16:51       ` Junio C Hamano
2026-02-28 12:20       ` kristofferhaugsbakk
2026-02-28 14:08         ` Jean-Noël AVILA
2026-03-01 19:21         ` [PATCH v2] doc: diff-options.adoc: make *.noprefix split translatable kristofferhaugsbakk
2026-03-02 16:53           ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqy0ko626g.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=code@khaugsbakk.name \
    --cc=git@vger.kernel.org \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox