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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 13, 2015 at 4:02 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> 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 ;-)

That's the point. Fancy stuff comes as separate, bite-size patches.

>> +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.

We probably want that feature back. Not implemented yet though.

>> +     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.

parse_options(), or *_SLASH_CHEAP to be exact, needs the index being
loaded (but not necesarily refreshed), so we can't simply move it
closer to refresh_index() after we have got the pathspec. And doing
read-cache-preload() without pathspec where read_cache() is seems a
waste of lstat() because the default mode is only look at cwd and
subdirs, not full worktree like git-status.

I have a patch (not sent yet) that adds read-cache-preload back. But
this 01/16 will likely stay simple and unoptimized.
-- 
Duy
--
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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]