Commit 2c6b6d9f authored by Ralf Thielow's avatar Ralf Thielow Committed by Junio C Hamano

help: make option --help open man pages only for Git commands

If option --help is passed to a Git command, we try to open
the man page of that command.  However, we do it for both commands
and concepts.  Make sure it is an actual command.

This makes "git <concept> --help" not working anymore, while
"git help <concept>" still works.
Signed-off-by: default avatarRalf Thielow <ralf.thielow@gmail.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent af74128f
......@@ -522,21 +522,34 @@ static void strip_extension(const char **argv)
static void handle_builtin(int argc, const char **argv)
{
struct argv_array args = ARGV_ARRAY_INIT;
const char *cmd;
struct cmd_struct *builtin;
strip_extension(argv);
cmd = argv[0];
/* Turn "git cmd --help" into "git help cmd" */
/* Turn "git cmd --help" into "git help --exclude-guides cmd" */
if (argc > 1 && !strcmp(argv[1], "--help")) {
int i;
argv[1] = argv[0];
argv[0] = cmd = "help";
for (i = 0; i < argc; i++) {
argv_array_push(&args, argv[i]);
if (!i)
argv_array_push(&args, "--exclude-guides");
}
argc++;
argv = args.argv;
}
builtin = get_builtin(cmd);
if (builtin)
exit(run_builtin(builtin, argc, argv));
argv_array_clear(&args);
}
static void execv_dashed_external(const char **argv)
......
......@@ -41,4 +41,12 @@ test_expect_success "--exclude-guides does not work for guides" '
test_must_be_empty test-browser.log
'
test_expect_success "--help does not work for guides" "
cat <<-EOF >expect &&
git: 'revisions' is not a git command. See 'git --help'.
EOF
test_must_fail git revisions --help 2>actual &&
test_i18ncmp expect actual
"
test_done
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment