git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Gerfried Fuchs <rhonda@debian.at>,
	462557@bugs.debian.org
Subject: Re: [PATCH] Let 'git <command> -h' show usage without a git dir
Date: Sun, 8 Nov 2009 05:03:41 -0600	[thread overview]
Message-ID: <20091108110341.GA23737@progeny.tock> (raw)
In-Reply-To: <7vvdhlfk2y.fsf@alter.siamese.dyndns.org>

Junio C Hamano wrote:
> Jonathan Nieder <jrnieder@gmail.com> writes:
> 
>> +/*
>> + * Let RUN_SETUP, USE_PAGER, and NEED_WORK_TREE take effect even if
>> + * passed the -h option.
>> + */
>> +#define H_IS_NOT_HELP	(1<<3)
> 
> Yuck.  Let's think of a way to avoid this ugliness.

Thank you. :)

> So I think the right approach is something like how you handled http-push;
> namely, check if the sole argument is "-h", and if so show help and exit.
> 
> 	Clarification. the following description only talks about "cmd -h"
> 	without any other options and arguments.
> 
> Such a change cannot be breaking backward compatibility for...
[...]
>  * "grep -h" cannot be asking for suppressing filenames as there is no
>    match pattern specified.

Okay, here’s a start.

-- %< --
Subject: Show usage string for 'git grep -h'

Clarification: the following description only talks about "git
grep -h" without any other options and arguments.

Such a change cannot be breaking backward compatibility.  "grep
-h" cannot be asking for suppressing filenames, as there is no
match pattern specified.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Is the long usage information really what is wanted here?  (I would
think yes, since there is no other way to get that, but sometimes all
I want is a reminder of the non-optional arguments.)

Without something like the previous patch, the usage information is
captured by a pager.  I know this is an accidental thing (not all
commands send their -h output through a pager), but it is very
convenient and mitigates the first effect somewhat.  Should
whatever -h always use with a pager?

The -h output is very long, and since it goes to standard error,
"git grep -h | head" does not succeed in capturing the best of it.

Usage errors caught in the same function die() currently.  I was going
to switch them to usage_msg_opt(), but because of the long usage
message, that would cause the error message to scroll off the
screen...

So I am not totally happy with this.  But it is certainly an
improvement over the output from before:

$ git grep -h
fatal: no pattern given.

I’ll sleep on it.  Thank you for the advice.

Good night,
Jonathan

 builtin-grep.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/builtin-grep.c b/builtin-grep.c
index 1df25b0..01be9bf 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -788,6 +788,13 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 		OPT_END()
 	};
 
+	/*
+	 * 'git grep -h', unlike 'git grep -h <pattern>', is a request
+	 * to show usage information and exit.
+	 */
+	if (argc == 2 && !strcmp(argv[1], "-h"))
+		usage_with_options(grep_usage, options);
+
 	memset(&opt, 0, sizeof(opt));
 	opt.prefix = prefix;
 	opt.prefix_length = (prefix && *prefix) ? strlen(prefix) : 0;
-- 
1.6.5.2

  reply	other threads:[~2009-11-08 10:54 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20080125173149.GA10287@edna.gwendoline.at>
2009-11-08  7:11 ` [PATCH] Let 'git <command> -h' show usage without a git dir Jonathan Nieder
2009-11-08  7:26   ` [PATCH] Show usage string for 'git http-push -h' Jonathan Nieder
2009-11-09  8:52     ` Tay Ray Chuan
2009-11-09 10:47       ` [PATCH v2] " Jonathan Nieder
2009-11-09 13:56         ` Tay Ray Chuan
2009-11-08  9:21   ` [PATCH] Let 'git <command> -h' show usage without a git dir Junio C Hamano
2009-11-08 11:03     ` Jonathan Nieder [this message]
2009-11-09 15:02       ` [PATCH 00/24] " Jonathan Nieder
2009-11-09 15:04         ` [PATCH 01/24] Retire fetch--tool helper to contrib/examples Jonathan Nieder
2009-11-09 15:04         ` [PATCH 02/24] Show usage string for 'git grep -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 03/24] Show usage string for 'git cherry -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 04/24] Show usage string for 'git commit-tree -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 05/24] Show usage string for 'git merge-ours -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH/RFC 06/24] Show usage string for 'git show-ref -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 07/24] check-ref-format: update usage string Jonathan Nieder
2009-11-10 20:11           ` Junio C Hamano
2009-11-09 15:04         ` [PATCH 08/24] Show usage string for 'git check-ref-format -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 09/24] Show usage string for 'git fast-import -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 10/24] Show usage string for 'git get-tar-commit-id -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 11/24] Show usage string for 'git imap-send -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 12/24] Show usage string for 'git mailsplit -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 13/24] Show usage string for 'git merge-one-file -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 14/24] Show usage string for 'git rev-parse -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 15/24] Show usage string for 'git show-index -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 16/24] Show usage string for 'git unpack-file -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 17/24] Show usage string for 'git stripspace -h' Jonathan Nieder
2009-11-09 15:04         ` [PATCH 18/24] merge: do not setup worktree twice Jonathan Nieder
2009-11-10 20:11           ` Junio C Hamano
2009-11-11  1:58             ` Jonathan Nieder
2009-11-09 15:04         ` [PATCH 19/24] Let 'git http-fetch -h' show usage outside any git repository Jonathan Nieder
2009-11-09 15:05         ` [PATCH 20/24] http-fetch: add missing initialization of argv0_path Jonathan Nieder
2009-11-10 20:12           ` Junio C Hamano
2009-11-10 21:56             ` Johannes Sixt
2009-11-11  1:52             ` Jonathan Nieder
2009-11-09 15:05         ` [PATCH 21/24] Let 'git <command> -h' show usage without a git dir Jonathan Nieder
2009-11-09 15:05         ` [PATCH 22/24] Let usage() take a printf-style format Jonathan Nieder
2009-11-10 20:16           ` Junio C Hamano
2009-11-09 15:05         ` [PATCH 23/24] merge-{recursive,subtree}: use usage() to print usage Jonathan Nieder
2009-11-09 15:05         ` [PATCH 24/24] diff --no-index: make the usage string less scary Jonathan Nieder

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

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

  git send-email \
    --in-reply-to=20091108110341.GA23737@progeny.tock \
    --to=jrnieder@gmail.com \
    --cc=462557@bugs.debian.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=rhonda@debian.at \
    /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.
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 NNTP newsgroup(s).