[PATCH 10/27] submodule: sparse-index should not collapse links
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jan 25, 2021, 17:41 UTC
- Message-ID
- <9cd38fb0e9e67109940b73489364b2f2099002ba.1611596534.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.847.git.1611596533.gitgitgadget@gmail.com>
From: Derrick Stolee <dstolee@microsoft.com>
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 <dstolee@microsoft.com> --- 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