Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

diff: enable and test the sparse index #419

Merged
merged 1 commit into from
Sep 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions builtin/diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix)

prefix = setup_git_directory_gently(&nongit);

prepare_repo_settings(the_repository);
the_repository->settings.command_requires_full_index = 0;

ldennington marked this conversation as resolved.
Show resolved Hide resolved
if (!no_index) {
/*
* Treat git diff with at least one path outside of the
Expand Down
39 changes: 39 additions & 0 deletions t/t1092-sparse-checkout-compatibility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,39 @@ test_expect_success 'diff --staged' '
test_all_match git diff --staged
'

test_expect_success 'diff partially-staged' '
init_repos &&

# Add file within cone
test_all_match git sparse-checkout set deep &&
run_on_all 'echo >deep/testfile' &&
test_all_match git add deep/testfile &&
run_on_all 'echo a new line >>deep/testfile' &&

test_all_match git diff &&
test_all_match git diff --staged &&

# Add file outside cone
test_all_match git reset --hard &&
run_on_all mkdir newdirectory &&
run_on_all 'echo >newdirectory/testfile' &&
test_all_match git sparse-checkout set newdirectory &&
test_all_match git add newdirectory/testfile &&
run_on_all 'echo a new line >>newdirectory/testfile' &&
test_all_match git sparse-checkout set &&

test_all_match git diff &&
test_all_match git diff --staged &&

# Merge conflict outside cone
test_all_match git reset --hard &&
test_all_match git checkout merge-left &&
test_all_match test_must_fail git merge merge-right &&

test_all_match git diff &&
test_all_match git diff --staged
'

# NEEDSWORK: sparse-checkout behaves differently from full-checkout when
# running this test with 'df-conflict-2' after 'df-conflict-1'.
test_expect_success 'diff with renames and conflicts' '
Expand Down Expand Up @@ -822,6 +855,12 @@ test_expect_success 'sparse-index is not expanded' '
ensure_not_expanded reset base -- folder1 &&

ensure_not_expanded reset --hard update-deep &&

echo a test change >>sparse-index/README.md &&
ensure_not_expanded diff &&
git -C sparse-index add README.md &&
ensure_not_expanded diff --staged &&

ensure_not_expanded checkout -f update-deep &&
(
sane_unset GIT_TEST_MERGE_ALGORITHM &&
Expand Down