[Bug] duplicated long-form options go unnoticed
From: Junio C Hamano <hidden>
Date: 2026-02-27 00:13:19
If you make this stupid change to builtin/cat-file.c, rebuild your git and run "git cat-file --batch-check", without anybody helping you notice that your change to add a duplicated long command to the options table is a nonsense. There should be some way to help the developer. The most expensive would be a run-time check in parse_options_check(), which is not very advisable, but it may be OK to have one hidden behind a conditional debugging option (like exporting GIT_PARSEOPT_PARFNOID variable). builtin/cat-file.c | 1 + 1 file changed, 1 insertion(+)
diff --git i/builtin/cat-file.c w/builtin/cat-file.c
index b6f12f41d6..eaa53b2b29 100644
--- i/builtin/cat-file.c
+++ w/builtin/cat-file.c@@ -1091,6 +1091,7 @@ int cmd_cat_file(int argc, N_("like --batch, but don't emit <contents>"), PARSE_OPT_OPTARG | PARSE_OPT_NONEG, batch_option_callback), + OPT_BOOL(0, "batch-check", &batch, N_("batch")), OPT_BOOL_F('z', NULL, &input_nul_terminated, N_("stdin is NUL-terminated"), PARSE_OPT_HIDDEN), OPT_BOOL('Z', NULL, &nul_terminated, N_("stdin and stdout is NUL-terminated")),