Skip to content

Commit 711f151

Browse files
pcloudsgitster
authored andcommitted
unpack-trees: do not check for conflict entries too early
The idea of sparse checkout is conflict entries should always stay in worktree, regardless $GIT_DIR/info/sparse-checkout. Therefore, ce_stage(ce) usually means no CE_SKIP_WORKTREE. This is true when all entries have been merged into the index, and identical staged entries collapsed. However, will_have_skip_worktree() since f1f523e (unpack-trees(): ignore worktree check outside checkout area) is also used earlier in verify_* functions, where entries have not been merged to index yet and ce_stage() is not zero. Checking ce_stage() then may provoke unnecessary verification on entries outside checkout area and error out. This fixes part of test case "read-tree adds to worktree, dirty case". The error error: Untracked working tree file 'sub/added' would be overwritten by merge. is now gone and (unfortunately) replaced by another error, which will be addressed in the next patch. Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]> Reviewed-by: Jonathan Nieder <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 700e66d commit 711f151

File tree

1 file changed

+1
-4
lines changed

1 file changed

+1
-4
lines changed

unpack-trees.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,6 @@ static int will_have_skip_worktree(const struct cache_entry *ce, struct unpack_t
143143
{
144144
const char *basename;
145145

146-
if (ce_stage(ce))
147-
return 0;
148-
149146
basename = strrchr(ce->name, '/');
150147
basename = basename ? basename+1 : ce->name;
151148
return excluded_from_list(ce->name, ce_namelen(ce), basename, NULL, o->el) <= 0;
@@ -155,7 +152,7 @@ static int apply_sparse_checkout(struct cache_entry *ce, struct unpack_trees_opt
155152
{
156153
int was_skip_worktree = ce_skip_worktree(ce);
157154

158-
if (will_have_skip_worktree(ce, o))
155+
if (!ce_stage(ce) && will_have_skip_worktree(ce, o))
159156
ce->ce_flags |= CE_SKIP_WORKTREE;
160157
else
161158
ce->ce_flags &= ~CE_SKIP_WORKTREE;

0 commit comments

Comments
 (0)