aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorKristoffer Haugsbakk <code@khaugsbakk.name>2026-02-24 00:30:50 +0100
committerJunio C Hamano <gitster@pobox.com>2026-02-23 15:55:19 -0800
commit04657ac02928bbd41fb4352db1bb0ba57488bad6 (patch)
treeaa2ee09d448bc079505ff00bbd0126bdf6e178b6 /builtin
parent67ad42147a7acc2af6074753ebd03d904476118f (diff)
downloadgit-04657ac02928bbd41fb4352db1bb0ba57488bad6.tar.xz
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>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/log.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/builtin/log.c b/builtin/log.c
index 5c9a8ef363..275122b807 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -40,6 +40,7 @@
#include "mailmap.h"
#include "progress.h"
#include "commit-slab.h"
+#include "advice.h"
#include "commit-reach.h"
#include "range-diff.h"
@@ -1096,7 +1097,18 @@ static int git_format_config(const char *var, const char *value,
return 0;
}
if (!strcmp(var, "format.noprefix")) {
- format_no_prefix = 1;
+ 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);
+ advise(_("'%s' used to accept any value and "
+ "treat that as 'true'.\n"
+ "Now it only accepts boolean values, "
+ "like what '%s' does.\n"),
+ var, "diff.noprefix");
+ exit(status);
+ }
return 0;
}