]> git.ipfire.org Git - thirdparty/git.git/commitdiff
help: correct usage & behavior of "git help --guides"
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 21 Sep 2021 22:40:32 +0000 (00:40 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 23 Sep 2021 17:30:43 +0000 (10:30 -0700)
As noted in 65f98358c0c (builtin/help.c: add --guide option,
2013-04-02) and a133737b809 (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
15f7d494380 (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 <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-help.txt
builtin/help.c
t/t0012-help.sh

index 568a0b606f3bde10917e262d56f0bb9cb91fb143..cb8e3d4da9e328753ab7d1e34a3c25245f067733 100644 (file)
@@ -8,8 +8,9 @@ git-help - Display help information about Git
 SYNOPSIS
 --------
 [verse]
-'git help' [-a|--all [--[no-]verbose]] [-g|--guides]
+'git help' [-a|--all [--[no-]verbose]]
           [[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
+'git help' [-g|--guides]
 
 DESCRIPTION
 -----------
@@ -58,8 +59,7 @@ OPTIONS
 
 -g::
 --guides::
-       Prints a list of the Git concept guides on the standard output. This
-       option overrides any given command or guide name.
+       Prints a list of the Git concept guides on the standard output.
 
 -i::
 --info::
index 44ea2798cda47367178280472e128986bb499637..51b18c291d8d6f9af25a6c66d3f71c82700a25e9 100644 (file)
@@ -59,8 +59,9 @@ static struct option builtin_help_options[] = {
 };
 
 static const char * const builtin_help_usage[] = {
-       N_("git help [-a|--all] [-g|--guides] [--[no-]verbose]]\n"
+       N_("git help [-a|--all] [--[no-]verbose]]\n"
           "         [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
+       N_("git help [-g|--guides]"),
        NULL
 };
 
@@ -552,6 +553,11 @@ int cmd_help(int argc, const char **argv, const char *prefix)
                        builtin_help_usage, 0);
        parsed_help_format = help_format;
 
+       /* Options that take no further arguments */
+       if (argc && show_guides)
+               usage_msg_opt(_("--guides cannot be combined with other options"),
+                             builtin_help_usage, builtin_help_options);
+
        if (show_all) {
                git_config(git_help_config, NULL);
                if (verbose) {
@@ -582,9 +588,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
 
        if (show_all || show_guides) {
                printf("%s\n", _(git_more_info_string));
-               /*
-               * We're done. Ignore any remaining args
-               */
                return 0;
        }
 
index 5679e29c62479c663446e76fbc587a2648efe601..0525ec3ee589519e60df7e988eae5447dd7be401 100755 (executable)
@@ -34,6 +34,10 @@ test_expect_success 'basic help commands' '
        git help -a >/dev/null
 '
 
+test_expect_success 'invalid usage' '
+       test_expect_code 129 git help -g add
+'
+
 test_expect_success "works for commands and guides by default" '
        configure_help &&
        git help status &&