unpack-trees: don't update files with CE_WT_REMOVE set
commit7d782416cb5176d93a073bee8048163db544c80f
authorDavid Turner <dturner@twopensource.com>
Fri, 17 Jul 2015 21:19:27 +0000 (17 17:19 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Jul 2015 20:19:20 +0000 (21 13:19 -0700)
tree89f017ef2524d1b4727f969dd82a9c07c2ed2b89
parent282616c72d1d08a77ca4fe1186cb708c38408d87
unpack-trees: don't update files with CE_WT_REMOVE set

Don't update files in the worktree from cache entries which are
flagged with CE_WT_REMOVE.

When a user does a sparse checkout, git removes files that are
marked with CE_WT_REMOVE (because they are out-of-scope for the
sparse checkout). If those files are also marked CE_UPDATE (for
instance, because they differ in the branch that is being checked
out and the outgoing branch), git would previously recreate them.
This patch prevents them from being recreated.

These erroneously-created files would also interfere with merges,
causing pre-merge revisions of out-of-scope files to appear in the
worktree.

apply_sparse_checkout() is the function where all "action"
manipulation (add, delete, update files..) for sparse checkout
occurs; it should not ask to delete and update both at the same
time.

Signed-off-by: Anatole Shaw <git-devel@omni.poc.net>
Signed-off-by: David Turner <dturner@twopensource.com>
Helped-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1090-sparse-checkout-scope.sh [new file with mode: 0755]
unpack-trees.c