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.