sparse-index: silently return when not using cone-mode patterns
While the sparse-index is only enabled when core.sparseCheckoutCone is also enabled, it is possible for the user to modify the sparse-checkout file manually in a way that does not match cone-mode patterns. In this case, we should refuse to convert an index into a sparse index, since the sparse_checkout_patterns will not be initialized with recursive and parent path hashsets. Also silently return if there are no cache entries, which is a simple case: there are no paths to make sparse! Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
522d3cec00
commit
e27eab45c7
|
@ -130,7 +130,7 @@ static int index_has_unmerged_entries(struct index_state *istate)
|
||||||
int convert_to_sparse(struct index_state *istate)
|
int convert_to_sparse(struct index_state *istate)
|
||||||
{
|
{
|
||||||
int test_env;
|
int test_env;
|
||||||
if (istate->split_index || istate->sparse_index ||
|
if (istate->split_index || istate->sparse_index || !istate->cache_nr ||
|
||||||
!core_apply_sparse_checkout || !core_sparse_checkout_cone)
|
!core_apply_sparse_checkout || !core_sparse_checkout_cone)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -158,10 +158,16 @@ int convert_to_sparse(struct index_state *istate)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!istate->sparse_checkout_patterns->use_cone_patterns) {
|
/*
|
||||||
warning(_("attempting to use sparse-index without cone mode"));
|
* We need cone-mode patterns to use sparse-index. If a user edits
|
||||||
return -1;
|
* their sparse-checkout file manually, then we can detect during
|
||||||
}
|
* parsing that they are not actually using cone-mode patterns and
|
||||||
|
* hence we need to abort this conversion _without error_. Warnings
|
||||||
|
* already exist in the pattern parsing to inform the user of their
|
||||||
|
* bad patterns.
|
||||||
|
*/
|
||||||
|
if (!istate->sparse_checkout_patterns->use_cone_patterns)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NEEDSWORK: If we have unmerged entries, then stay full.
|
* NEEDSWORK: If we have unmerged entries, then stay full.
|
||||||
|
|
Loading…
Reference in New Issue