Merge branch 'ds/sparse-sparse-checkout'
"sparse-checkout" learns to work well with the sparse-index feature. * ds/sparse-sparse-checkout: sparse-checkout: integrate with sparse index p2000: add test for 'git sparse-checkout [add|set]' sparse-index: complete partial expansion sparse-index: partially expand directories sparse-checkout: --no-sparse-index needs a full index cache-tree: implement cache_tree_find_path() sparse-index: introduce partially-sparse indexes sparse-index: create expand_index() t1092: stress test 'git sparse-checkout set' t1092: refactor 'sparse-index contents' test
This commit is contained in:
@ -128,7 +128,7 @@ static void clean_tracked_sparse_directories(struct repository *r)
|
||||
* sparse index will not delete directories that contain
|
||||
* conflicted entries or submodules.
|
||||
*/
|
||||
if (!r->index->sparse_index) {
|
||||
if (r->index->sparse_index == INDEX_EXPANDED) {
|
||||
/*
|
||||
* If something, such as a merge conflict or other concern,
|
||||
* prevents us from converting to a sparse index, then do
|
||||
@ -413,6 +413,9 @@ static int update_modes(int *cone_mode, int *sparse_index)
|
||||
/* force an index rewrite */
|
||||
repo_read_index(the_repository);
|
||||
the_repository->index->updated_workdir = 1;
|
||||
|
||||
if (!*sparse_index)
|
||||
ensure_full_index(the_repository->index);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -934,6 +937,9 @@ int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
prepare_repo_settings(the_repository);
|
||||
the_repository->settings.command_requires_full_index = 0;
|
||||
|
||||
if (argc > 0) {
|
||||
if (!strcmp(argv[0], "list"))
|
||||
return sparse_checkout_list(argc, argv);
|
||||
|
||||
Reference in New Issue
Block a user