Re: [PATCH] help: make option --help open man pages only for Git commands
From: Junio C Hamano <hidden>
Date: 2016-08-12 21:34:32
Ralf Thielow [off-list ref] writes:
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 <redacted> ---
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*] ;-)
quoted hunk
builtin/help.c | 21 ++++++++++++++------- t/t0012-help.sh | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) create mode 100755 t/t0012-help.shdiff --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.