Re: [PATCH] grep: correct help string for --exclude-standard
From: Jeff King <hidden>
Date: 2016-06-15 23:03:58
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Fri, Feb 27, 2015 at 09:01:58PM +0700, Nguyễn Thái Ngọc Duy wrote:
quoted hunk ↗ jump to hunk
The current help string is about --no-exclude-standard. But "git grep -h" would show --exclude-standard instead. Flip the string. See 0a93fb8 (grep: teach --untracked and --exclude-standard options - 2011-09-27) for more info about these options. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- builtin/grep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/builtin/grep.c b/builtin/grep.c index 4063882..e77f7cf 100644 --- a/builtin/grep.c +++ b/builtin/grep.c@@ -641,7 +641,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) OPT_BOOL(0, "untracked", &untracked, N_("search in both tracked and untracked files")), OPT_SET_INT(0, "exclude-standard", &opt_exclude, - N_("search also in ignored files"), 1), + N_("ignore files specified via '.gitignore'"), 1),
Hmm. If the default is "--exclude-standard", then what expect people to use is "--no-exclude-standard". Would it make more sense to list that in the "-h" output? Sadly I think to do that you have to manually specify "--no-exclude-standard" with OPT_NONEG, and then manually specify "--exclude-standard" in addition with OPT_HIDDEN. It might be nice if parseopt had a PARSE_OPT_NEGHELP option or something to show the "--no-" form. Something like:
diff --git a/builtin/grep.c b/builtin/grep.c
index 9262b73..c03c3e7 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c@@ -640,8 +640,10 @@ int cmd_grep(int argc, const char **argv, const char *prefix) N_("find in contents not managed by git"), 1), OPT_BOOL(0, "untracked", &untracked, N_("search in both tracked and untracked files")), - OPT_SET_INT(0, "exclude-standard", &opt_exclude, - N_("search also in ignored files"), 1), + { OPTION_SET_INT, 0, "exclude-standard", &opt_exclude, + NULL, N_("search also in ignored files"), + PARSE_OPT_NOARG | PARSE_OPT_NEGHELP, + NULL, 1 }, OPT_GROUP(""), OPT_BOOL('v', "invert-match", &opt.invert, N_("show non-matching lines")),
diff --git a/parse-options.c b/parse-options.c
index 80106c0..0ba7dc4 100644
--- a/parse-options.c
+++ b/parse-options.c@@ -599,8 +599,12 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx, } if (opts->long_name && opts->short_name) pos += fprintf(outfile, ", "); - if (opts->long_name) - pos += fprintf(outfile, "--%s", opts->long_name); + if (opts->long_name) { + int neg = opts->flags & PARSE_OPT_NEGHELP; + pos += fprintf(outfile, "--%s%s", + neg ? "no-" : "", + opts->long_name); + } if (opts->type == OPTION_NUMBER) pos += utf8_fprintf(outfile, _("-NUM"));
diff --git a/parse-options.h b/parse-options.h
index 7940bc7..e688c32 100644
--- a/parse-options.h
+++ b/parse-options.h@@ -37,6 +37,7 @@ enum parse_opt_option_flags { PARSE_OPT_LASTARG_DEFAULT = 16, PARSE_OPT_NODASH = 32, PARSE_OPT_LITERAL_ARGHELP = 64, + PARSE_OPT_NEGHELP = 128, PARSE_OPT_SHELL_EVAL = 256 };
Though it is annoying that we have to give up the nice OPT_SET_INT macro to specify an extra flag. -Peff