]> git.ipfire.org Git - thirdparty/git.git/commit - pathspec.c
add: skip tracked paths outside sparse-checkout cone
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 24 Sep 2021 15:39:07 +0000 (15:39 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 28 Sep 2021 17:31:02 +0000 (10:31 -0700)
commit49fdd51a235fe2ca91a6d1b16315204f0f016a96
treea98ca6a6ec6c35b59843be5f415ac34332291d24
parent105e8b014b1d584174aca81081ee5428caea03cb
add: skip tracked paths outside sparse-checkout cone

When 'git add' adds a tracked file that is outside of the
sparse-checkout cone, it checks the SKIP_WORKTREE bit to see if the file
exists outside of the sparse-checkout cone. This is usually correct,
except in the case of a merge conflict outside of the cone.

Modify add_pathspec_matched_against_index() to be more careful about
paths by checking the sparse-checkout patterns in addition to the
SKIP_WORKTREE bit. This causes 'git add' to no longer allow files
outside of the cone that removed the SKIP_WORKTREE bit due to a merge
conflict.

With only this change, users will only be able to add the file after
adding the file to the sparse-checkout cone. A later change will allow
users to force adding even though the file is outside of the
sparse-checkout cone.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/add.c
pathspec.c
t/t1091-sparse-checkout-builtin.sh
t/t1092-sparse-checkout-compatibility.sh
t/t3705-add-sparse-checkout.sh