From: Jeff King Date: Thu, 18 Feb 2010 02:18:50 GMT Subject: Re: [PATCH] show help message also for aliased commands Message-ID: <20100218021850.GB21693@coredump.intra.peff.net> In-Reply-To: <1266456562-88841-1-git-send-email-patrick.sudowe@rwth-aachen.de> On Thu, Feb 18, 2010 at 02:29:22AM +0100, Patrick Sudowe wrote: > git help 'alias' currently only shows the actual git command > 'alias' refers to. This patch changes the behavior so that > the help for the actual git command is shown. The user usually > knows the aliases defined, and sometimes its just more convenient > to type something like git help co than git help checkout > to find out about some rarely used option. > The original message is still there, so users do not face > unexpected or surprising behavior. Won't the original message get eaten when 'man' starts a pager (I know there are other, non-paged ways of showing the help, but man is the default). > @@ -446,19 +447,22 @@ int cmd_help(int argc, const char **argv, const char *prefix) > alias = alias_lookup(argv[0]); > if (alias && !is_git_command(argv[0])) { > printf("`git %s' is aliased to `%s'\n", argv[0], alias); > - return 0; > + cmd = alias; > + } else { > + cmd = argv[0]; > } > > + > switch (help_format) { > case HELP_FORMAT_NONE: > case HELP_FORMAT_MAN: > - show_man_page(argv[0]); > + show_man_page(cmd); This breaks horribly for all but the simplest of aliases. This works: $ git config alias.co checkout $ git help co But this would need to trim it down to just "log": $ git config alias.lp 'log -p' $ git help lp `git lp' is aliased to `log -p' No manual entry for gitlog -p And this is just impossible: $ git config alias.jive '!sh -c "git log | jive"' $ git help jive `git jive' is aliased to `!sh -c "git log | jive"' No manual entry for git!sh -c "git log | jive" -Peff