sparse-index: add index.sparse config option
When enabled, this config option signals that index writes should attempt to use sparse-directory entries. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
0938e6ff55
commit
58300f4743
@ -102,19 +102,43 @@ static int convert_to_sparse_rec(struct index_state *istate,
|
||||
return num_converted - start_converted;
|
||||
}
|
||||
|
||||
static int enable_sparse_index(struct repository *repo)
|
||||
{
|
||||
const char *config_path = repo_git_path(repo, "config.worktree");
|
||||
|
||||
git_config_set_in_file_gently(config_path,
|
||||
"index.sparse",
|
||||
"true");
|
||||
|
||||
prepare_repo_settings(repo);
|
||||
repo->settings.sparse_index = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int convert_to_sparse(struct index_state *istate)
|
||||
{
|
||||
if (istate->split_index || istate->sparse_index ||
|
||||
!core_apply_sparse_checkout || !core_sparse_checkout_cone)
|
||||
return 0;
|
||||
|
||||
if (!istate->repo)
|
||||
istate->repo = the_repository;
|
||||
|
||||
/*
|
||||
* For now, only create a sparse index with the
|
||||
* GIT_TEST_SPARSE_INDEX environment variable. We will relax
|
||||
* this once we have a proper way to opt-in (and later still,
|
||||
* opt-out).
|
||||
* The GIT_TEST_SPARSE_INDEX environment variable triggers the
|
||||
* index.sparse config variable to be on.
|
||||
*/
|
||||
if (!git_env_bool("GIT_TEST_SPARSE_INDEX", 0))
|
||||
if (git_env_bool("GIT_TEST_SPARSE_INDEX", 0)) {
|
||||
int err = enable_sparse_index(istate->repo);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
* Only convert to sparse if index.sparse is set.
|
||||
*/
|
||||
prepare_repo_settings(istate->repo);
|
||||
if (!istate->repo->settings.sparse_index)
|
||||
return 0;
|
||||
|
||||
if (!istate->sparse_checkout_patterns) {
|
||||
|
Reference in New Issue
Block a user