On Sat, Jul 13, 2013 at 12:26 AM, Thomas Gummerer <[email protected]> wrote:
> + if (!with_tree) {
> + memset(opts, 0, sizeof(*opts));
> + opts->pathspec = &pathspec_struct;
> + opts->read_staged = 1;
> + if (show_resolve_undo)
> + opts->read_resolve_undo = 1;
> + read_cache_filtered(opts);
So you load partial index here.
> + } else {
> + read_cache();
> + }
> + /* be nice with submodule paths ending in a slash */
> + if (pathspec)
> + strip_trailing_slash_from_submodules();
Then strip_trailing_slash_from_submodules will attempt to convert
pathspec "foo/" to "foo" if "foo" exists in the index and is a
gitlink. But becaues "foo/" is used to load the partial index, "foo"
is not loaded (is it?) and this could become incorrect no-op. I
suggest you go through the pathspec once checking for ones ending with
'/'. If so strip_trailing_... may potentially update pathspec, just
load full index. If no pathspec ends with '/', strip_trail... is no-op
and we can do partial loading safely.
--
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html