Merge branch 'sl/worktree-sparse'
"git worktree" learned to work better with sparse index feature. * sl/worktree-sparse: worktree: integrate with sparse-index
This commit is contained in:
@ -1407,5 +1407,9 @@ int cmd_worktree(int ac, const char **av, const char *prefix)
|
|||||||
prefix = "";
|
prefix = "";
|
||||||
|
|
||||||
ac = parse_options(ac, av, prefix, options, git_worktree_usage, 0);
|
ac = parse_options(ac, av, prefix, options, git_worktree_usage, 0);
|
||||||
|
|
||||||
|
prepare_repo_settings(the_repository);
|
||||||
|
the_repository->settings.command_requires_full_index = 0;
|
||||||
|
|
||||||
return fn(ac, av, prefix);
|
return fn(ac, av, prefix);
|
||||||
}
|
}
|
||||||
|
@ -133,5 +133,6 @@ test_perf_on_all git diff-files
|
|||||||
test_perf_on_all git diff-files -- $SPARSE_CONE/a
|
test_perf_on_all git diff-files -- $SPARSE_CONE/a
|
||||||
test_perf_on_all git diff-tree HEAD
|
test_perf_on_all git diff-tree HEAD
|
||||||
test_perf_on_all git diff-tree HEAD -- $SPARSE_CONE/a
|
test_perf_on_all git diff-tree HEAD -- $SPARSE_CONE/a
|
||||||
|
test_perf_on_all "git worktree add ../temp && git worktree remove ../temp"
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -2222,4 +2222,41 @@ test_expect_success 'sparse-index is not expanded: diff-tree' '
|
|||||||
ensure_not_expanded diff-tree HEAD update-folder1 -- folder1/a
|
ensure_not_expanded diff-tree HEAD update-folder1 -- folder1/a
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'worktree' '
|
||||||
|
init_repos &&
|
||||||
|
|
||||||
|
write_script edit-contents <<-\EOF &&
|
||||||
|
echo text >>"$1"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for repo in full-checkout sparse-checkout sparse-index
|
||||||
|
do
|
||||||
|
worktree=${repo}-wt &&
|
||||||
|
git -C $repo worktree add ../$worktree &&
|
||||||
|
|
||||||
|
# Compare worktree content with "ls"
|
||||||
|
(cd $repo && ls) >worktree_contents &&
|
||||||
|
(cd $worktree && ls) >new_worktree_contents &&
|
||||||
|
test_cmp worktree_contents new_worktree_contents &&
|
||||||
|
|
||||||
|
# Compare index content with "ls-files --sparse"
|
||||||
|
git -C $repo ls-files --sparse >index_contents &&
|
||||||
|
git -C $worktree ls-files --sparse >new_index_contents &&
|
||||||
|
test_cmp index_contents new_index_contents &&
|
||||||
|
|
||||||
|
git -C $repo worktree remove ../$worktree || return 1
|
||||||
|
done &&
|
||||||
|
|
||||||
|
test_all_match git worktree add .worktrees/hotfix &&
|
||||||
|
run_on_all ../edit-contents .worktrees/hotfix/deep/a &&
|
||||||
|
test_all_match test_must_fail git worktree remove .worktrees/hotfix
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'worktree is not expanded' '
|
||||||
|
init_repos &&
|
||||||
|
|
||||||
|
ensure_not_expanded worktree add .worktrees/hotfix &&
|
||||||
|
ensure_not_expanded worktree remove .worktrees/hotfix
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Reference in New Issue
Block a user