]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git: show alias info only with lone -h
authorRené Scharfe <l.s.r@web.de>
Fri, 25 Jul 2025 18:41:24 +0000 (20:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Jul 2025 23:34:13 +0000 (16:34 -0700)
Builtin commands show usage information on stdout if called with -h as
their only option, usage.c::show_usage_if_asked() makes sure of that.

Aliases show alias information on stderr if called with -h as the first
option since a9a60b94cc (git.c: handle_alias: prepend alias info when
first argument is -h, 2018-10-09).  This is surprising when using
aliases for commands that take -h as a normal argument among others,
like git grep.

Tighten the condition and show the alias information only if -h is the
only option given, to be consistent with builtins.

It's probably still is a good idea to write to stderr, as an alias
command doesn't have to be a builtin and could instead produce output
with just -h that might be spoiled by an extra alias info line.

Reported-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git.c

diff --git a/git.c b/git.c
index 07a5fe39fb69f02589e52ac432d06021f815c76f..83eac0aeab75d63593fcd9f15698d32a0486d39d 100644 (file)
--- a/git.c
+++ b/git.c
@@ -371,7 +371,7 @@ static int handle_alias(struct strvec *args)
        alias_command = args->v[0];
        alias_string = alias_lookup(alias_command);
        if (alias_string) {
-               if (args->nr > 1 && !strcmp(args->v[1], "-h"))
+               if (args->nr == 2 && !strcmp(args->v[1], "-h"))
                        fprintf_ln(stderr, _("'%s' is aliased to '%s'"),
                                   alias_command, alias_string);
                if (alias_string[0] == '!') {