Re: [PATCH 01/16] list-files: command skeleton
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:04:08
Nguyễn Thái Ngọc Duy [off-list ref] 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 ;-)
+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.
+ 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.
quoted hunk
+ 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.