]> git.ipfire.org Git - thirdparty/git.git/commit - unpack-trees.c
unpack-trees: preserve index sparsity
authorVictoria Dye <vdye@github.com>
Tue, 10 May 2022 23:32:32 +0000 (23:32 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 10 May 2022 23:45:13 +0000 (16:45 -0700)
commit0f329b9ae4f49d1f76cdd4cae518b2ae757e111e
tree59f22c6947290f53e39f5deef90ff0ebfa3756bb
parent874cf2a6044462ddba7162730557354a107c3a6d
unpack-trees: preserve index sparsity

When unpacking trees, set the default sparsity of the resultant index based
on repo settings and 'is_sparse_index_allowed()'.

Normally, when executing 'unpack_trees', the output index is marked sparse
when (and only when) it unpacks a sparse directory. However, an index may be
"sparse" even if it contains no sparse directories - when all files fall
inside the sparse-checkout definition or otherwise have SKIP_WORKTREE
disabled. Therefore, the output index may be marked "full" even when it is
"sparse", resulting in unnecessary 'ensure_full_index' calls when writing to
disk. Avoid this by setting the "default" index sparsity to match what is
expected for the repository.

As a consequence of this fix, the (non-merge) 'read-tree' performed when
applying a stash with untracked files no longer expands the index. Update
the corresponding test in 't1092'.

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1092-sparse-checkout-compatibility.sh
unpack-trees.c