зеркало из https://github.com/microsoft/git.git
submodule: sparse-index should not collapse links
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. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
6e773527b6
Коммит
f442313e2e
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -376,4 +376,21 @@ test_expect_success 'clean' '
|
|||
test_sparse_match test_path_is_dir folder1
|
||||
'
|
||||
|
||||
test_expect_success 'submodule handling' '
|
||||
init_repos &&
|
||||
|
||||
test_all_match mkdir modules &&
|
||||
test_all_match touch modules/a &&
|
||||
test_all_match git add modules &&
|
||||
test_all_match git commit -m "add modules directory" &&
|
||||
|
||||
run_on_all git submodule add "$(pwd)/initial-repo" modules/sub &&
|
||||
test_all_match git commit -m "add submodule" &&
|
||||
|
||||
# having a submodule prevents "modules" from collapse
|
||||
test-tool -C sparse-index read-cache --table >cache &&
|
||||
grep "100644 blob .* modules/a" cache &&
|
||||
grep "160000 commit $(git -C initial-repo rev-parse HEAD) modules/sub" cache
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче