Re: [PATCH] help: make option --help open man pages only for Git commands
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 12, 2016, 21:34 UTC
- Message-ID
- <xmqqk2flvfhb.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20160812201011.20233-1-ralf.thielow@gmail.com>
Ralf Thielow <ralf.thielow@gmail.com> writes:
Show 8 quoted lines
> If option --help is passed to a Git command, we try to open > the man page of that command. However, we do it even for commands > we don't know. Make sure the command is known to Git before try > to open the man page. If we don't know the command, give the > usual advice. > > Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> > ---
I love it when I say "This shouldn't be too hard; somebody may want to do a patch", with just a vague implemention idea in my head, and a patch magically appears with even a better design than I had in mind when I said it [*1*] ;-)
Show 25 quoted lines
> builtin/help.c | 21 ++++++++++++++-------
> t/t0012-help.sh | 15 +++++++++++++++
> 2 files changed, 29 insertions(+), 7 deletions(-)
> create mode 100755 t/t0012-help.sh
>
> diff --git a/builtin/help.c b/builtin/help.c
> index 8848013..55d45de 100644
> --- a/builtin/help.c
> +++ b/builtin/help.c
> @@ -433,10 +433,22 @@ static void list_common_guides_help(void)
> putchar('\n');
> }
>
> +static void check_git_cmd(const char* cmd) {
> + char *alias = alias_lookup(cmd);
> +
> + if (!is_git_command(cmd)) {
> + if (alias) {
> + printf_ln(_("`git %s' is aliased to `%s'"), cmd, alias);
> + free(alias);
> + exit(0);
> + } else
> + help_unknown_cmd(cmd);
> + }
> +}Looks quite reasonable to reuse help_unknown_cmd() there.
Thanks, will queue.
[Footnote]
*1* The vague thing I had in my mind was to use is_git_command() and
alias_lookup() to prevent the "git foo --help" -> "git help foo"
magic from triggering for 'foo' that is not known. Your solution
is MUCH cleaner and more straight-forward.