Skip to content

Commit

Permalink
Merge branch 'ds/sparse-diff-index'
Browse files Browse the repository at this point in the history
The underlying machinery for "git diff-index" has long been made to
expand the sparse index as needed, but the command fully expanded
the sparse index upfront, which now has been taught not to do.

* ds/sparse-diff-index:
  diff-index: integrate with the sparse index
  • Loading branch information
gitster committed Aug 29, 2024
2 parents 839b808 + b44c926 commit 11fd53a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
4 changes: 4 additions & 0 deletions builtin/diff-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
usage(diff_cache_usage);

git_config(git_diff_basic_config, NULL); /* no "diff" UI options */

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

repo_init_revisions(the_repository, &rev, prefix);
rev.abbrev = 0;
prefix = precompose_argv_prefix(argc, argv, prefix);
Expand Down
15 changes: 12 additions & 3 deletions t/t1092-sparse-checkout-compatibility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,8 @@ test_expect_success 'update-index --remove outside sparse definition' '
test_sparse_match git diff --cached --name-status &&
test_cmp expect sparse-checkout-out &&
test_sparse_match git diff-index --cached HEAD &&
# Reset the state
test_all_match git reset --hard &&
Expand All @@ -812,6 +814,8 @@ test_expect_success 'update-index --remove outside sparse definition' '
test_sparse_match git diff --cached --name-status &&
test_must_be_empty sparse-checkout-out &&
test_sparse_match git diff-index --cached HEAD &&
# Reset the state
test_all_match git reset --hard &&
Expand All @@ -823,7 +827,9 @@ test_expect_success 'update-index --remove outside sparse definition' '
D folder1/a
EOF
test_sparse_match git diff --cached --name-status &&
test_cmp expect sparse-checkout-out
test_cmp expect sparse-checkout-out &&
test_sparse_match git diff-index --cached HEAD
'

test_expect_success 'update-index with directories' '
Expand Down Expand Up @@ -1551,7 +1557,7 @@ test_expect_success 'sparse-index is not expanded: describe' '
ensure_not_expanded describe
'

test_expect_success 'sparse index is not expanded: diff' '
test_expect_success 'sparse index is not expanded: diff and diff-index' '
init_repos &&
write_script edit-contents <<-\EOF &&
Expand All @@ -1568,6 +1574,7 @@ test_expect_success 'sparse index is not expanded: diff' '
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached &&
ensure_not_expanded diff-index --cached HEAD &&
# Add file outside cone
test_all_match git reset --hard &&
Expand All @@ -1582,6 +1589,7 @@ test_expect_success 'sparse index is not expanded: diff' '
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached &&
ensure_not_expanded diff-index --cached HEAD &&
# Merge conflict outside cone
# The sparse checkout will report a warning that is not in the
Expand All @@ -1594,7 +1602,8 @@ test_expect_success 'sparse index is not expanded: diff' '
test_all_match git diff &&
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached
ensure_not_expanded diff --cached &&
ensure_not_expanded diff-index --cached HEAD
'

test_expect_success 'sparse index is not expanded: show and rev-parse' '
Expand Down

0 comments on commit 11fd53a

Please sign in to comment.