diff --git a/builtin/blame.c b/builtin/blame.c index 7fafeac408141b..bda314c1658537 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -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); diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh index fbf340bf3d0da3..b3307dfd044b0e 100755 --- a/t/perf/p2000-sparse-operations.sh +++ b/t/perf/p2000-sparse-operations.sh @@ -120,6 +120,7 @@ test_perf_on_all git checkout-index -f --all test_perf_on_all git update-index --add --remove test_perf_on_all git diff test_perf_on_all git diff --cached +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 diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh index 0f419005fa2824..0b6b675eeec68b 100755 --- a/t/t1092-sparse-checkout-compatibility.sh +++ b/t/t1092-sparse-checkout-compatibility.sh @@ -533,7 +533,7 @@ test_expect_success 'blame with pathspec inside sparse definition' ' # Without a revision specified, blame will error if passed any file that # is not present in the working directory (even if the file is tracked). # Here we just verify that this is also true with sparse checkouts. -test_expect_success 'blame with pathspec outside sparse definition' ' +test_expect_success 'blame with pathspec outside sparse definition' ') init_repos && test_sparse_match git sparse-checkout set && @@ -1685,6 +1685,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' '