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 1259d22222b5cd..c08c353733ac8f 100755 --- a/t/perf/p2000-sparse-operations.sh +++ b/t/perf/p2000-sparse-operations.sh @@ -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 diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh index 0333c4969d0a2c..d314d1da7df14e 100755 --- a/t/t1092-sparse-checkout-compatibility.sh +++ b/t/t1092-sparse-checkout-compatibility.sh @@ -530,9 +530,6 @@ test_expect_success 'blame with pathspec inside sparse definition' ' done ' -# 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' ' init_repos && test_sparse_match git sparse-checkout set && @@ -1716,6 +1713,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' '