git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Philip Oakley" <philipoakley@iee.org>
To: "Ralf Thielow" <ralf.thielow@gmail.com>, <git@vger.kernel.org>
Cc: <gitster@pobox.com>, <larsxschneider@gmail.com>, <me@jnm2.com>,
	"Ralf Thielow" <ralf.thielow@gmail.com>
Subject: Re: [PATCH v2] help: make option --help open man pages only for Git commands
Date: Mon, 15 Aug 2016 12:25:40 +0100	[thread overview]
Message-ID: <D954CB3E6C3445AF9358C6941362B69D@PhilipOakley> (raw)
In-Reply-To: 20160815053628.3793-1-ralf.thielow@gmail.com

From: "Ralf Thielow" <ralf.thielow@gmail.com>
> 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

>
> 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
> 


  reply	other threads:[~2016-08-15 11:25 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-12  2:00 `git stash --help` tries to pull up nonexistent file gitstack.html Joseph Musser
2016-08-12 15:48 ` Junio C Hamano
2016-08-12 16:03   ` Lars Schneider
2016-08-12 16:15     ` Joseph Musser
2016-08-12 16:25       ` Junio C Hamano
2016-08-12 18:14         ` Jacob Keller
2016-08-12 20:10         ` [PATCH] help: make option --help open man pages only for Git commands Ralf Thielow
2016-08-12 21:34           ` Junio C Hamano
2016-08-12 22:53             ` Junio C Hamano
2016-08-13  0:08               ` Philip Oakley
2016-08-13 15:31                 ` Junio C Hamano
2016-08-15  5:36           ` [PATCH v2] " Ralf Thielow
2016-08-15 11:25             ` Philip Oakley [this message]
2016-08-15 17:57               ` Junio C Hamano
2016-08-15 20:40                 ` Philip Oakley
2016-08-15 22:19                   ` Junio C Hamano
2016-08-16 10:06                   ` John Keeping
2016-08-16 16:20             ` [PATCH v3] " Ralf Thielow
2016-08-16 16:33               ` John Keeping
2016-08-16 16:39                 ` Ralf Thielow
2016-08-16 17:27               ` Junio C Hamano
2016-08-16 17:57                 ` Ralf Thielow
2016-08-16 19:06                   ` Junio C Hamano
2016-08-18 18:57               ` [PATCH 0/2] " Ralf Thielow
2016-08-18 18:57                 ` [PATCH 1/2] help: introduce option --command-only Ralf Thielow
2016-08-18 18:57                   ` [PATCH 2/2] help: make option --help open man pages only for Git commands Ralf Thielow
2016-08-18 19:51                     ` Junio C Hamano
2016-08-23 17:34                       ` Ralf Thielow
2016-08-18 21:47                   ` [PATCH 1/2] help: introduce option --command-only Philip Oakley
2016-08-19  8:32                   ` Johannes Schindelin
2016-08-19 15:53                     ` Junio C Hamano
2016-08-23 17:41                     ` Ralf Thielow
2016-08-24  7:47                       ` Johannes Schindelin
2016-08-19  8:39                   ` Remi Galan Alfonso
2016-08-23 17:37                     ` Ralf Thielow
2016-08-26 17:58                 ` [PATCH v2 0/3] help: make option --help open man pages only for Git commands Ralf Thielow
2016-08-26 17:58                   ` [PATCH v2 1/3] Revert "display HTML in default browser using Windows' shell API" Ralf Thielow
2016-08-26 17:58                   ` [PATCH v2 2/3] help: introduce option --exclude-guides Ralf Thielow
2016-08-26 19:06                     ` Junio C Hamano
2016-08-26 19:42                       ` Junio C Hamano
2016-08-26 20:03                         ` Ralf Thielow
2016-08-26 20:28                           ` Junio C Hamano
2016-08-26 20:00                       ` Ralf Thielow
2016-08-26 20:20                         ` Junio C Hamano
2016-08-26 20:39                           ` Ralf Thielow
2016-08-26 17:58                   ` [PATCH v2 3/3] help: make option --help open man pages only for Git commands Ralf Thielow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D954CB3E6C3445AF9358C6941362B69D@PhilipOakley \
    --to=philipoakley@iee.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=larsxschneider@gmail.com \
    --cc=me@jnm2.com \
    --cc=ralf.thielow@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).