diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-08-19 14:41:27 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-19 14:41:27 -0700 |
commit | 4f66e44300fd7e718d7240e211f2d4a3c576de82 (patch) | |
tree | 170c744122082f14ebfc7854f6b53ee054bff89a /unpack-trees.c | |
parent | 7e7ce32f7aa3b2b63d267c7efa173d129d1096cb (diff) | |
parent | 7d782416cb5176d93a073bee8048163db544c80f (diff) | |
download | git-4f66e44300fd7e718d7240e211f2d4a3c576de82.tar.gz |
Merge branch 'as/sparse-checkout-removal' into maint
"sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
* as/sparse-checkout-removal:
unpack-trees: don't update files with CE_WT_REMOVE set
Diffstat (limited to 'unpack-trees.c')
-rw-r--r-- | unpack-trees.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 2927660d92..d6cf84904f 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -224,6 +224,9 @@ static int check_updates(struct unpack_trees_options *o) struct cache_entry *ce = index->cache[i]; if (ce->ce_flags & CE_UPDATE) { + if (ce->ce_flags & CE_WT_REMOVE) + die("BUG: both update and delete flags are set on %s", + ce->name); display_progress(progress, ++cnt); ce->ce_flags &= ~CE_UPDATE; if (o->update && !o->dry_run) { @@ -293,6 +296,7 @@ static int apply_sparse_checkout(struct index_state *istate, if (!(ce->ce_flags & CE_UPDATE) && verify_uptodate_sparse(ce, o)) return -1; ce->ce_flags |= CE_WT_REMOVE; + ce->ce_flags &= ~CE_UPDATE; } if (was_skip_worktree && !ce_skip_worktree(ce)) { if (verify_absent_sparse(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o)) |