From: Derrick Stolee <redacted>
A submodule is stored as a "Git link" that actually points to a commit
within a submodule. Submodules are populated or not depending on
submodule configuration, not sparse-checkout. To ensure that the
sparse-index feature integrates correctly with submodules, we should not
collapse a directory if there is a Git link within its range.
This allows us to remove ensure_full_index() from
die_path_inside_submodule() because a sparse-index will not remove the
entries for Git links. The loop already 'continue's if the cache entry
is not a Git link.
Signed-off-by: Derrick Stolee <redacted>
---
sparse-index.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/sparse-index.c b/sparse-index.c
index d8f1a5a13d7..5dd0b835b9d 100644
--- a/sparse-index.c
+++ b/sparse-index.c
@@ -52,6 +52,7 @@ static int convert_to_sparse_rec(struct index_state *istate,
struct cache_entry *ce = istate->cache[i];
if (ce_stage(ce) ||
+ S_ISGITLINK(ce->ce_mode) ||
!(ce->ce_flags & CE_SKIP_WORKTREE))
can_convert = 0;
}
--
gitgitgadget