git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Ralf Thielow <ralf.thielow@gmail.com>
To: git@vger.kernel.org, gitster@pobox.com, larsxschneider@gmail.com,
	me@jnm2.com
Cc: Ralf Thielow <ralf.thielow@gmail.com>
Subject: [PATCH] help: make option --help open man pages only for Git commands
Date: Fri, 12 Aug 2016 22:10:11 +0200	[thread overview]
Message-ID: <20160812201011.20233-1-ralf.thielow@gmail.com> (raw)
In-Reply-To: <CAPc5daXicjUDi6B-MA8Sn=_UZ_jHvc8SE4ZXt2dHbbDQkD7=WA@mail.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.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
---
 builtin/help.c  | 21 ++++++++++++++-------
 t/t0012-help.sh | 15 +++++++++++++++
 2 files changed, 29 insertions(+), 7 deletions(-)
 create mode 100755 t/t0012-help.sh

diff --git a/builtin/help.c b/builtin/help.c
index 8848013..55d45de 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -433,10 +433,22 @@ static void list_common_guides_help(void)
 	putchar('\n');
 }
 
+static void check_git_cmd(const char* cmd) {
+	char *alias = alias_lookup(cmd);
+
+	if (!is_git_command(cmd)) {
+		if (alias) {
+			printf_ln(_("`git %s' is aliased to `%s'"), cmd, alias);
+			free(alias);
+			exit(0);
+		} else
+			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 +488,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;
-	}
+	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.911.g31804cd.dirty


  parent reply	other threads:[~2016-08-12 20:10 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         ` Ralf Thielow [this message]
2016-08-12 21:34           ` [PATCH] help: make option --help open man pages only for Git commands 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
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=20160812201011.20233-1-ralf.thielow@gmail.com \
    --to=ralf.thielow@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=larsxschneider@gmail.com \
    --cc=me@jnm2.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).