git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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);
Previous: Thomas GummererNext: Thomas Gummerer
Message 4 of 32 in “Implicitly use --no-index if git grep is used outside of repo”
  1. 0/3 Implicitly use --no-index if git grep is used outside of repoThomas Gummerer, Jan 10, 2016
  2. 1/3 t7810: correct --no-index testThomas Gummerer, Jan 10, 2016
  3. 2/3 builtin/grep: rename use_index to no_indexThomas Gummerer, Jan 10, 2016
  4. Junio C HamanoJan 11, 2016
  5. 3/3 builtin/grep: allow implicit --no-indexThomas Gummerer, Jan 10, 2016
  6. Duy NguyenJan 11, 2016
  7. Thomas GummererJan 11, 2016
  8. Junio C HamanoJan 11, 2016
  9. Thomas GummererJan 11, 2016
  10. Jeff KingJan 11, 2016
  11. Junio C HamanoJan 11, 2016
  12. Eric SunshineJan 11, 2016
  13. Thomas GummererJan 11, 2016
  14. Junio C HamanoJan 11, 2016
  15. Thomas GummererJan 11, 2016
  16. Junio C HamanoJan 11, 2016
  17. Junio C HamanoJan 11, 2016
  18. Thomas GummererJan 11, 2016
  19. 0/3 Introduce a --use-index command line argument in git grepThomas Gummerer, Jan 11, 2016
  20. 1/3 t7810: correct --no-index testThomas Gummerer, Jan 11, 2016
  21. 2/3 builtin/grep: rename use_index to no_indexThomas Gummerer, Jan 11, 2016
  22. 3/3 builtin/grep: introduce --use-index argumentThomas Gummerer, Jan 11, 2016
  23. 0/2 grep: add fallbackToNoIndex config optionThomas Gummerer, Jan 11, 2016
  24. 1/2 t7810: correct --no-index testThomas Gummerer, Jan 11, 2016
  25. 2/2 builtin/grep: add grep.fallbackToNoIndex configThomas Gummerer, Jan 11, 2016
  26. Jeff KingJan 11, 2016
  27. Thomas GummererJan 11, 2016
  28. 0/2 grep: add fallbackToNoIndex config optionThomas Gummerer, Jan 12, 2016
  29. 1/2 t7810: correct --no-index testThomas Gummerer, Jan 12, 2016
  30. 2/2 builtin/grep: add grep.fallbackToNoIndex configThomas Gummerer, Jan 12, 2016
  31. Jeff KingJan 12, 2016
  32. Thomas GummererJan 12, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.