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@xxxxxxxxx> --- Changes in v2: - not only check for commands but also for guides - use the command assumed by "help_unknown_cmd" builtin/help.c | 34 +++++++++++++++++++++++++++------- t/t0012-help.sh | 15 +++++++++++++++ 2 files changed, 42 insertions(+), 7 deletions(-) create mode 100755 t/t0012-help.sh diff --git a/builtin/help.c b/builtin/help.c index 8848013..7d2110e 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -433,10 +433,35 @@ static void list_common_guides_help(void) putchar('\n'); } +static int is_common_guide(const char* cmd) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(common_guides); i++) + if (!strcmp(cmd, common_guides[i].name)) + return 1; + return 0; +} + +static const char* check_git_cmd(const char* cmd) +{ + char *alias; + + if (is_git_command(cmd) || is_common_guide(cmd)) + return cmd; + + alias = alias_lookup(cmd); + if (alias) { + printf_ln(_("`git %s' is aliased to `%s'"), cmd, alias); + free(alias); + exit(0); + } else + return help_unknown_cmd(cmd); +} + int cmd_help(int argc, const char **argv, const char *prefix) { int nongit; - char *alias; enum help_format parsed_help_format; argc = parse_options(argc, argv, prefix, builtin_help_options, @@ -476,12 +501,7 @@ int cmd_help(int argc, const char **argv, const char *prefix) if (help_format == HELP_FORMAT_NONE) help_format = parse_help_format(DEFAULT_HELP_FORMAT); - alias = alias_lookup(argv[0]); - if (alias && !is_git_command(argv[0])) { - printf_ln(_("`git %s' is aliased to `%s'"), argv[0], alias); - free(alias); - return 0; - } + argv[0] = check_git_cmd(argv[0]); switch (help_format) { case HELP_FORMAT_NONE: diff --git a/t/t0012-help.sh b/t/t0012-help.sh new file mode 100755 index 0000000..0dab88d --- /dev/null +++ b/t/t0012-help.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +test_description='help' + +. ./test-lib.sh + +test_expect_success "pass --help to unknown command" " + cat <<-EOF >expected && + git: '123' is not a git command. See 'git --help'. + EOF + (git 123 --help 2>actual || true) && + test_i18ncmp expected actual +" + +test_done -- 2.9.2.912.g51c4565.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html