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> --- 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); + } +} + 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 +488,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; - } + 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.911.g31804cd.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