On Mon, Aug 5, 2024 at 8:36 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > Imagine seeing your command failing with "too many arguments" when > you run "git cmd foo bar baz". Can you tell it will work if you > said "git cmd foo bar"? Or is that trimming your command line too > much? Too little? > > Instead, if the command reports "unknown argument: 'bar'", you'd know > that "bar" and everything after it is unwanted. > > Let's make it so for a few remaining commands. > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c > @@ -2503,7 +2503,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) > if (argc > 1) > - usage_msg_opt(_("too many arguments"), receive_pack_usage, options); > + usage_msg_optf(_("unknown argument: '%s'"), > + receive_pack_usage, options, argv[0]); Is this supposed to be referencing `argv[1]` rather than `argv[0]`... > diff --git a/builtin/tag.c b/builtin/tag.c > @@ -641,7 +641,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix) > if (argc > 2) > - die(_("too many arguments")); > + die(_("unknown argument: '%s'"), argv[2]); ...similar to how this references `argv[2]` when the condition is `argc > 2`?