Merge branch 'sl/diff-files-sparse'
Teach "diff-files" not to expand sparse-index unless needed. * sl/diff-files-sparse: diff-files: integrate with sparse index t1092: add tests for `git diff-files`maint
commit
5ca11547bb
|
@ -27,6 +27,10 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
|
||||||
usage(diff_files_usage);
|
usage(diff_files_usage);
|
||||||
|
|
||||||
git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
|
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);
|
repo_init_revisions(the_repository, &rev, prefix);
|
||||||
rev.abbrev = 0;
|
rev.abbrev = 0;
|
||||||
|
|
||||||
|
|
|
@ -129,5 +129,7 @@ test_perf_on_all git grep --cached bogus -- "f2/f1/f1/*"
|
||||||
test_perf_on_all git write-tree
|
test_perf_on_all git write-tree
|
||||||
test_perf_on_all git describe --dirty
|
test_perf_on_all git describe --dirty
|
||||||
test_perf_on_all 'echo >>new && git describe --dirty'
|
test_perf_on_all 'echo >>new && git describe --dirty'
|
||||||
|
test_perf_on_all git diff-files
|
||||||
|
test_perf_on_all git diff-files -- $SPARSE_CONE/a
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
|
@ -1377,7 +1377,7 @@ test_expect_success 'index.sparse disabled inline uses full index' '
|
||||||
! test_region index ensure_full_index trace2.txt
|
! test_region index ensure_full_index trace2.txt
|
||||||
'
|
'
|
||||||
|
|
||||||
ensure_not_expanded () {
|
run_sparse_index_trace2 () {
|
||||||
rm -f trace2.txt &&
|
rm -f trace2.txt &&
|
||||||
if test -z "$WITHOUT_UNTRACKED_TXT"
|
if test -z "$WITHOUT_UNTRACKED_TXT"
|
||||||
then
|
then
|
||||||
|
@ -1397,7 +1397,16 @@ ensure_not_expanded () {
|
||||||
git -C sparse-index "$@" \
|
git -C sparse-index "$@" \
|
||||||
>sparse-index-out \
|
>sparse-index-out \
|
||||||
2>sparse-index-error || return 1
|
2>sparse-index-error || return 1
|
||||||
fi &&
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_expanded () {
|
||||||
|
run_sparse_index_trace2 "$@" &&
|
||||||
|
test_region index ensure_full_index trace2.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_not_expanded () {
|
||||||
|
run_sparse_index_trace2 "$@" &&
|
||||||
test_region ! index ensure_full_index trace2.txt
|
test_region ! index ensure_full_index trace2.txt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2108,4 +2117,57 @@ test_expect_success 'sparse-index is not expanded: write-tree' '
|
||||||
ensure_not_expanded write-tree
|
ensure_not_expanded write-tree
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'diff-files with pathspec inside sparse definition' '
|
||||||
|
init_repos &&
|
||||||
|
|
||||||
|
write_script edit-contents <<-\EOF &&
|
||||||
|
echo text >>"$1"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
run_on_all ../edit-contents deep/a &&
|
||||||
|
|
||||||
|
test_all_match git diff-files &&
|
||||||
|
|
||||||
|
test_all_match git diff-files -- deep/a &&
|
||||||
|
|
||||||
|
# test wildcard
|
||||||
|
test_all_match git diff-files -- "deep/*"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'diff-files with pathspec outside sparse definition' '
|
||||||
|
init_repos &&
|
||||||
|
|
||||||
|
test_sparse_match git diff-files -- folder2/a &&
|
||||||
|
|
||||||
|
write_script edit-contents <<-\EOF &&
|
||||||
|
echo text >>"$1"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# The directory "folder1" is outside the cone of interest
|
||||||
|
# and will not exist in the sparse checkout repositories.
|
||||||
|
# Create it as needed, add file "folder1/a" there with
|
||||||
|
# contents that is different from the staged version.
|
||||||
|
run_on_all mkdir -p folder1 &&
|
||||||
|
run_on_all cp a folder1/a &&
|
||||||
|
|
||||||
|
run_on_all ../edit-contents folder1/a &&
|
||||||
|
test_all_match git diff-files &&
|
||||||
|
test_all_match git diff-files -- folder1/a &&
|
||||||
|
test_all_match git diff-files -- "folder*/a"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'sparse index is not expanded: diff-files' '
|
||||||
|
init_repos &&
|
||||||
|
|
||||||
|
write_script edit-contents <<-\EOF &&
|
||||||
|
echo text >>"$1"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
run_on_all ../edit-contents deep/a &&
|
||||||
|
|
||||||
|
ensure_not_expanded diff-files &&
|
||||||
|
ensure_not_expanded diff-files -- deep/a &&
|
||||||
|
ensure_not_expanded diff-files -- "deep/*"
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue