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

Re: [PATCH 01/16] list-files: command skeleton

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 12, 2015, 21:02 UTC
Message-ID
<xmqq1tku2akz.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1425896314-10941-2-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
> list-files is supposed to be the user friendly version of ls-files, or
> an alternative to git-status. Nothing fancy in this patch yet.

The result of applying this patch alone will not give us anything fancy, but the patch itself is interesting ;-)

Show 12 quoted lines
> +static void populate_cached_entries(struct string_list *result,
> +				    const struct index_state *istate)
> +{
> +	int i;
> +
> +	for (i = 0; i < istate->cache_nr; i++) {
> +		const struct cache_entry *ce = istate->cache[i];
> +
> +		if (!match_pathspec(&pathspec, ce->name, ce_namelen(ce),
> +				    0, NULL,
> +				    S_ISDIR(ce->ce_mode) ||
> +				    S_ISGITLINK(ce->ce_mode)))

Because we won't tell the user "You gave me Mkaefile but that did not match" when "git list-files Mkaefile" does not produce anything, we do not need to pass seen[] down from here.

Show 20 quoted lines
> +	prefix = cmd_prefix;
> +	if (prefix)
> +		prefix_length = strlen(prefix);
> +
> +	if (read_cache() < 0)
> +		die(_("index file corrupt"));
> +
> +	git_config(ls_config, NULL);
> +
> +	argc = parse_options(argc, argv, prefix, ls_options, ls_usage, 0);
> +
> +	parse_pathspec(&pathspec, 0,
> +		       PATHSPEC_PREFER_CWD |
> +		       PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP,
> +		       cmd_prefix, argv);
> +	pathspec.max_depth = 0;
> +	pathspec.recursive = 1;
> +
> +	refresh_index(&the_index, REFRESH_QUIET | REFRESH_UNMERGED,
> +		      &pathspec, NULL, NULL);

It would be better to do read-cache-preload, instead of read-cache, if you are going to immediately refresh. That is what "git status" does.

Show 14 quoted lines
> +	populate_cached_entries(&result, &the_index);
> +	display(&result);
> +	string_list_clear(&result, 0);
> +	return 0;
> +}
> diff --git a/git.c b/git.c
> index 18fbf79..ae7fe77 100644
> --- a/git.c
> +++ b/git.c
> @@ -418,6 +418,7 @@ static struct cmd_struct commands[] = {
>  	{ "init", cmd_init_db, NO_SETUP },
>  	{ "init-db", cmd_init_db, NO_SETUP },
>  	{ "interpret-trailers", cmd_interpret_trailers, RUN_SETUP },
> +	{ "list-files", cmd_list_files, RUN_SETUP | USE_PAGER | NEED_WORK_TREE },
Thanks.
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 3 of 29 in “nd/list-files redesign”
  1. 00/16 nd/list-files redesignNguyễn Thái Ngọc Duy, Mar 9, 2015
  2. 01/16 list-files: command skeletonNguyễn Thái Ngọc Duy, Mar 9, 2015
  3. Junio C HamanoMar 12, 2015
  4. 02/16 list-files: make :(glob) pathspec defaultNguyễn Thái Ngọc Duy, Mar 9, 2015
  5. Junio C HamanoMar 12, 2015
  6. Duy NguyenMar 14, 2015
  7. 03/16 list-files: show paths relative to cwdNguyễn Thái Ngọc Duy, Mar 9, 2015
  8. Junio C HamanoMar 12, 2015
  9. Junio C HamanoMar 12, 2015
  10. Duy NguyenMar 14, 2015
  11. Junio C HamanoMar 15, 2015
  12. Duy NguyenMar 15, 2015
  13. 04/16 list-files: add tag to each entry, filter duplicate tagsNguyễn Thái Ngọc Duy, Mar 9, 2015
  14. Junio C HamanoMar 12, 2015
  15. 05/16 list-files: add --[no-]column, -C and -1Nguyễn Thái Ngọc Duy, Mar 9, 2015
  16. 06/16 list-files: add --max-depth and -RNguyễn Thái Ngọc Duy, Mar 9, 2015
  17. 07/16 list-files: show directories as well as filesNguyễn Thái Ngọc Duy, Mar 9, 2015
  18. Eric SunshineMar 10, 2015
  19. Duy NguyenMar 10, 2015
  20. 08/16 list-files: add --colorNguyễn Thái Ngọc Duy, Mar 9, 2015
  21. 09/16 list-files: add -F/--classifyNguyễn Thái Ngọc Duy, Mar 9, 2015
  22. 10/16 list-files: new indicator '&' for submodules when -F is usedNguyễn Thái Ngọc Duy, Mar 9, 2015
  23. 11/16 list-files: add --cached and --othersNguyễn Thái Ngọc Duy, Mar 9, 2015
  24. 12/16 list-files: add --ignoredNguyễn Thái Ngọc Duy, Mar 9, 2015
  25. 13/16 list-files: add --unmergedNguyễn Thái Ngọc Duy, Mar 9, 2015
  26. 14/16 list-files: add file modification options -[admADM]Nguyễn Thái Ngọc Duy, Mar 9, 2015
  27. 15/16 list-files: delete redundant cached entriesNguyễn Thái Ngọc Duy, Mar 9, 2015
  28. Eric SunshineMar 10, 2015
  29. 16/16 list-files: make alias 'ls' default to 'list-files'Nguyễn Thái Ngọc Duy, Mar 9, 2015

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.