Skip to content

Commit 9856ea6

Browse files
avargitster
authored andcommitted
help: correct usage & behavior of "git help --guides"
As noted in 65f9835 (builtin/help.c: add --guide option, 2013-04-02) and a133737 (doc: include --guide option description for "git help", 2013-04-02) which introduced the --guide option, it cannot be combined with e.g. <command>. Change the command and the "SYNOPSIS" section to reflect that desired behavior. Now that we assert this in code we don't need to exhaustively describe the previous confusing behavior in the documentation either, instead of silently ignoring the provided argument we'll now error out. The "We're done. Ignore any remaining args" comment added in 15f7d49 (builtin/help.c: split "-a" processing into two, 2013-04-02) can now be removed, it's obvious that we're asserting the behavior with the check of "argc". The "--config" option is still missing from the synopsis, it will be added in a subsequent commit where we'll fix bugs in its implementation. Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b408452 commit 9856ea6

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

Documentation/git-help.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ git-help - Display help information about Git
88
SYNOPSIS
99
--------
1010
[verse]
11-
'git help' [-a|--all [--[no-]verbose]] [-g|--guides]
11+
'git help' [-a|--all [--[no-]verbose]]
1212
[[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
13+
'git help' [-g|--guides]
1314

1415
DESCRIPTION
1516
-----------
@@ -58,8 +59,7 @@ OPTIONS
5859

5960
-g::
6061
--guides::
61-
Prints a list of the Git concept guides on the standard output. This
62-
option overrides any given command or guide name.
62+
Prints a list of the Git concept guides on the standard output.
6363

6464
-i::
6565
--info::

builtin/help.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ static struct option builtin_help_options[] = {
5959
};
6060

6161
static const char * const builtin_help_usage[] = {
62-
N_("git help [-a|--all] [-g|--guides] [--[no-]verbose]]\n"
62+
N_("git help [-a|--all] [--[no-]verbose]]\n"
6363
" [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
64+
N_("git help [-g|--guides]"),
6465
NULL
6566
};
6667

@@ -552,6 +553,11 @@ int cmd_help(int argc, const char **argv, const char *prefix)
552553
builtin_help_usage, 0);
553554
parsed_help_format = help_format;
554555

556+
/* Options that take no further arguments */
557+
if (argc && show_guides)
558+
usage_msg_opt(_("--guides cannot be combined with other options"),
559+
builtin_help_usage, builtin_help_options);
560+
555561
if (show_all) {
556562
git_config(git_help_config, NULL);
557563
if (verbose) {
@@ -582,9 +588,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
582588

583589
if (show_all || show_guides) {
584590
printf("%s\n", _(git_more_info_string));
585-
/*
586-
* We're done. Ignore any remaining args
587-
*/
588591
return 0;
589592
}
590593

t/t0012-help.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ test_expect_success 'basic help commands' '
3434
git help -a >/dev/null
3535
'
3636

37+
test_expect_success 'invalid usage' '
38+
test_expect_code 129 git help -g add
39+
'
40+
3741
test_expect_success "works for commands and guides by default" '
3842
configure_help &&
3943
git help status &&

0 commit comments

Comments
 (0)