[PATCH 3/3] Mark new entries skip-worktree appropriately
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Jul 26, 2010, 09:08 UTC
- Message-ID
- <1280135310-2347-3-git-send-email-pclouds@gmail.com>
- In-Reply-To
- <1280135310-2347-1-git-send-email-pclouds@gmail.com>
Sparse checkout updates worktree based on the old and new skip-worktree status when $GIT_DIR/info/sparse-checkout changes:
old = ce_skip_worktree(ce); // current skip-worktree new = will_have_skip_work_tree(ce); // from $GIT..sparse-checkout if (old && !new) add_file_back(ce); // shrink checkout area if (!old && new) remove_file_out(ce); [1] // enlarge checkout area
New entries after merging will always have skip-worktree unset (i.e. old = 0). If those files are filtered out by $GIT_DIR/info/sparse-checkout (i.e. new != 0), then case [1] will happen. But there is nothing to remove because they're new.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- t/t1011-read-tree-sparse-checkout.sh | 2 +- unpack-trees.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/t/t1011-read-tree-sparse-checkout.sh b/t/t1011-read-tree-sparse-checkout.sh index 885578a..86a6246 100755 --- a/t/t1011-read-tree-sparse-checkout.sh +++ b/t/t1011-read-tree-sparse-checkout.sh @@ -138,7 +138,7 @@ test_expect_success 'read-tree adds to worktree, absent case' ' test ! -f sub/added ' -test_expect_failure 'read-tree adds to worktree, dirty case' ' +test_expect_success 'read-tree adds to worktree, dirty case' ' echo init.t > .git/info/sparse-checkout && git checkout -f removed && mkdir sub && diff --git a/unpack-trees.c b/unpack-trees.c index 7ea8c5f..f98b1cb 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1091,6 +1091,8 @@ static int merged_entry(struct cache_entry *merge, struct cache_entry *old, if (!old) { if (verify_absent(merge, "overwritten", o)) return -1; + if (!o->skip_sparse_checkout && will_have_skip_worktree(merge, o)) + update |= CE_SKIP_WORKTREE; invalidate_ce_path(merge, o); } else if (!(old->ce_flags & CE_CONFLICTED)) { /*
-- 1.7.1.rc1.69.g24c2f7