]> git.ipfire.org Git - thirdparty/git.git/commit
format-patch: make format.noprefix a boolean
authorKristoffer Haugsbakk <code@khaugsbakk.name>
Mon, 23 Feb 2026 23:30:50 +0000 (00:30 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Feb 2026 23:55:19 +0000 (15:55 -0800)
commit04657ac02928bbd41fb4352db1bb0ba57488bad6
treeaa2ee09d448bc079505ff00bbd0126bdf6e178b6
parent67ad42147a7acc2af6074753ebd03d904476118f
format-patch: make format.noprefix a boolean

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 advising about the
previous behavior before dying.

Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/log.c
t/t4014-format-patch.sh