git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] help: make option --help open man pages only for Git commands

From
Philip Oakley <philipoakley@iee.org>
Date
Aug 15, 2016, 11:25 UTC
Message-ID
<D954CB3E6C3445AF9358C6941362B69D@PhilipOakley>
In-Reply-To
<20160815053628.3793-1-ralf.thielow@gmail.com>
From: "Ralf Thielow" <ralf.thielow@gmail.com>
Show 5 quoted lines
> 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.

I'm still not sure this is enough. One of the problems back when I introduced the --guides option (65f9835 (builtin/help.c: add --guide option, 2013-04-02)) was that we had no easy way of determining what guides were available, especially given the *nix/Windows split where the help defaults are different (--man/--html).

At the time[1] we (I) punted on trying to determine which guides were actually installed, and just created a short list of the important guides, which I believe you now check. However the less common guides are still there (gitcvs-migration?), and others may be added locally.

One option may be to report that "no command or common guide found, will search for other guide (may fail)", which at least allows you to check the command list first, and then the common guide list, and only then warn (option?), and finally go on the rabbit hunt (possibly fruitless) for the missing guide (we've already decided it can't be a command!)

-- Philip

[1] https://public-inbox.org/git/1364942392-576-1-git-send-email-philipoakley@iee.org/ (V3) plus previous discussions https://public-inbox.org/git/1362342072-1412-1-git-send-email-philipoakley@iee.org/ (V2) see note Patch 6 - 13: All dropped. Drop the separate guide list.txt and extraction script, which was copied from the common command list and script. If the guide usage list is useful, extend the command-list.txt and generate-cmdlist.sh at a later datehttps://public-inbox.org/git/1361660761-1932-1-git-send-email-philipoakley@iee.org/#t (V1) the original series

Show 97 quoted lines
>
> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
> ---
> 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@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Previous: Ralf ThielowNext: Junio C Hamano
Message 13 of 46 in “`git stash --help` tries to pull up nonexistent file gitstack.html”
  1. Joseph MusserAug 12, 2016
  2. Junio C HamanoAug 12, 2016
  3. Lars SchneiderAug 12, 2016
  4. Joseph MusserAug 12, 2016
  5. Junio C HamanoAug 12, 2016
  6. Jacob KellerAug 12, 2016
  7. help: make option --help open man pages only for Git commandsRalf Thielow, Aug 12, 2016
  8. Junio C HamanoAug 12, 2016
  9. Junio C HamanoAug 12, 2016
  10. Philip OakleyAug 13, 2016
  11. Junio C HamanoAug 13, 2016
  12. help: make option --help open man pages only for Git commandsRalf Thielow, Aug 15, 2016
  13. Philip OakleyAug 15, 2016
  14. Junio C HamanoAug 15, 2016
  15. Philip OakleyAug 15, 2016
  16. Junio C HamanoAug 15, 2016
  17. John KeepingAug 16, 2016
  18. help: make option --help open man pages only for Git commandsRalf Thielow, Aug 16, 2016
  19. John KeepingAug 16, 2016
  20. Ralf ThielowAug 16, 2016
  21. Junio C HamanoAug 16, 2016
  22. Ralf ThielowAug 16, 2016
  23. Junio C HamanoAug 16, 2016
  24. 0/2 help: make option --help open man pages only for Git commandsRalf Thielow, Aug 18, 2016
  25. 1/2 help: introduce option --command-onlyRalf Thielow, Aug 18, 2016
  26. Philip OakleyAug 18, 2016
  27. 2/2 help: make option --help open man pages only for Git commandsRalf Thielow, Aug 18, 2016
  28. Junio C HamanoAug 18, 2016
  29. Ralf ThielowAug 23, 2016
  30. Remi Galan AlfonsoAug 19, 2016
  31. Ralf ThielowAug 23, 2016
  32. Johannes SchindelinAug 19, 2016
  33. Junio C HamanoAug 19, 2016
  34. Ralf ThielowAug 23, 2016
  35. Johannes SchindelinAug 24, 2016
  36. 0/3 help: make option --help open man pages only for Git commandsRalf Thielow, Aug 26, 2016
  37. 1/3 Revert "display HTML in default browser using Windows' shell API"Ralf Thielow, Aug 26, 2016
  38. 3/3 help: make option --help open man pages only for Git commandsRalf Thielow, Aug 26, 2016
  39. 2/3 help: introduce option --exclude-guidesRalf Thielow, Aug 26, 2016
  40. Junio C HamanoAug 26, 2016
  41. Junio C HamanoAug 26, 2016
  42. Ralf ThielowAug 26, 2016
  43. Junio C HamanoAug 26, 2016
  44. Ralf ThielowAug 26, 2016
  45. Junio C HamanoAug 26, 2016
  46. Ralf ThielowAug 26, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.