Skip to content

Commit

Permalink
Merge pull request #431 from ldennington/sparse-index-blame
Browse files Browse the repository at this point in the history
blame: enable and test the sparse index
  • Loading branch information
ldennington authored and derrickstolee committed Oct 31, 2021
2 parents 891d40f + ea3bc1f commit 0f4d7c8
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
2 changes: 2 additions & 0 deletions builtin/blame.c
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
long anchor;
const int hexsz = the_hash_algo->hexsz;

prepare_repo_settings(the_repository);
the_repository->settings.command_requires_full_index = 0;
setup_default_color_by_age();
git_config(git_blame_config, &output_option);
repo_init_revisions(the_repository, &revs, NULL);
Expand Down
2 changes: 2 additions & 0 deletions t/perf/p2000-sparse-operations.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,7 @@ test_perf_on_all git update-index --add --remove
test_perf_on_all git diff
test_perf_on_all git diff --staged
test_perf_on_all git sparse-checkout reapply
test_perf_on_all git blame $SPARSE_CONE/a
test_perf_on_all git blame $SPARSE_CONE/f3/a

test_done
20 changes: 15 additions & 5 deletions t/t1092-sparse-checkout-compatibility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -518,13 +518,14 @@ test_expect_success 'blame with pathspec inside sparse definition' '

# TODO: blame currently does not support blaming files outside of the
# sparse definition. It complains that the file doesn't exist locally.
test_expect_failure 'blame with pathspec outside sparse definition' '
test_expect_success 'blame with pathspec outside sparse definition' '
init_repos &&
test_all_match git blame folder1/a &&
test_all_match git blame folder2/a &&
test_all_match git blame deep/deeper2/a &&
test_all_match git blame deep/deeper2/deepest/a
test_sparse_match git sparse-checkout set &&
test_sparse_match test_must_fail git blame folder1/a &&
test_sparse_match test_must_fail git blame folder2/a &&
test_sparse_match test_must_fail git blame deep/deeper2/a &&
test_sparse_match test_must_fail git blame deep/deeper2/deepest/a
'

# TODO: This behaves correctly in microsoft/git. Why?
Expand Down Expand Up @@ -1404,6 +1405,15 @@ test_expect_success 'stash -u outside sparse checkout definition' '
test_all_match git status --porcelain=v2
'

test_expect_success 'sparse index is not expanded: blame' '
init_repos &&
ensure_not_expanded blame a &&
ensure_not_expanded blame deep/a &&
ensure_not_expanded blame deep/deeper1/a &&
ensure_not_expanded blame deep/deeper1/deepest/a
'

# NEEDSWORK: a sparse-checkout behaves differently from a full checkout
# in this scenario, but it shouldn't.
test_expect_success 'reset mixed and checkout orphan' '
Expand Down

0 comments on commit 0f4d7c8

Please sign in to comment.