Re: [PATCH 2/3] builtin/grep: rename use_index to no_index
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 11, 2016, 17:33 UTC
- Message-ID
- <xmqqd1t8xbq2.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <1452435597-12099-3-git-send-email-t.gummerer@gmail.com>
Thomas Gummerer <t.gummerer@gmail.com> writes:
Show 8 quoted lines
> Switch the OPT_NEGBIT argument to a OPT_BIT argument, and rename the > corresponding use_index variable to a no_index variable. This will make > the following step easier to follow. No functional changes intended. > > Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> > --- > builtin/grep.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-)
This makes the resulting code full of double negations, I am afraid. Please do not do this.
I am open to turning "use_index" to a tristate, initialized to -1 (unknown), set to 0 with OPT_SET_INT("no-index"), and optionally set to 1 with OPT_SET_INT("use-index"). Then after parsing the command line argument, if use_index is still -1 (i.e. no command line option), set it to 1 when we can use the index, or 0 (the new feature you want to add with 3/3).
Show 46 quoted lines
> diff --git a/builtin/grep.c b/builtin/grep.c
> index 4229cae..3a27bd5 100644
> --- a/builtin/grep.c
> +++ b/builtin/grep.c
> @@ -625,14 +625,14 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
> struct string_list path_list = STRING_LIST_INIT_NODUP;
> int i;
> int dummy;
> - int use_index = 1;
> + int no_index = 0;
> int pattern_type_arg = GREP_PATTERN_TYPE_UNSPECIFIED;
>
> struct option options[] = {
> OPT_BOOL(0, "cached", &cached,
> N_("search in index instead of in the work tree")),
> - OPT_NEGBIT(0, "no-index", &use_index,
> - N_("find in contents not managed by git"), 1),
> + OPT_BIT(0, "no-index", &no_index,
> + 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,
> @@ -755,7 +755,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
> PARSE_OPT_STOP_AT_NON_OPTION);
> grep_commit_pattern_type(pattern_type_arg, &opt);
>
> - if (use_index && !startup_info->have_repository)
> + if (!no_index && !startup_info->have_repository)
> /* die the same way as if we did it at the beginning */
> setup_git_directory();
>
> @@ -873,11 +873,11 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
> if (!show_in_pager && !opt.status_only)
> setup_pager();
>
> - if (!use_index && (untracked || cached))
> + if (no_index && (untracked || cached))
> die(_("--cached or --untracked cannot be used with --no-index."));
>
> - if (!use_index || untracked) {
> - int use_exclude = (opt_exclude < 0) ? use_index : !!opt_exclude;
> + if (no_index || untracked) {
> + int use_exclude = (opt_exclude < 0) ? !no_index : !!opt_exclude;
> if (list.nr)
> die(_("--no-index or --untracked cannot be used with revs."));
> hit = grep_directory(&opt, &pathspec, use_exclude);