Skip to content

Commit

Permalink
Merge pull request #419 from ldennington/sparse-index-diff
Browse files Browse the repository at this point in the history
diff: enable and test the sparse index
  • Loading branch information
ldennington committed Sep 12, 2021
2 parents f28fc01 + 73c2e9a commit b713582
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
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;

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

0 comments on commit b713582

Please sign in to comment.