Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> 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. > + 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html