On 10/27/2021 2:20 PM, Victoria Dye via GitGitGadget wrote: > From: Victoria Dye <vdye@xxxxxxxxxx> > +static int is_sparse_index_allowed(struct index_state *istate, int flags) I agree this name is better. > { > - int test_env; > - if (istate->sparse_index || !istate->cache_nr || > - !core_apply_sparse_checkout || !core_sparse_checkout_cone) > + if (!core_apply_sparse_checkout || !core_sparse_checkout_cone) > return 0; > > if (!istate->repo) > istate->repo = the_repository; > > if (!(flags & SPARSE_INDEX_MEMORY_ONLY)) { > + int test_env; > + > /* > * The sparse index is not (yet) integrated with a split index. > */ Nice that most of the implementation comes over without showing up in the diff. > if (!istate->sparse_checkout_patterns->use_cone_patterns) > return 0; > > + return 1; > +} > + > +int convert_to_sparse(struct index_state *istate, int flags) > +{ > + /* > + * If the index is already sparse, empty, or otherwise > + * cannot be converted to sparse, do not convert. > + */ > + if (istate->sparse_index || !istate->cache_nr || > + !is_sparse_index_allowed(istate, flags)) > + return 0; > +void ensure_correct_sparsity(struct index_state *istate) > +{ > + /* > + * If the index can be sparse, make it sparse. Otherwise, > + * ensure the index is full. > + */ > + if (is_sparse_index_allowed(istate, 0)) > + convert_to_sparse(istate, 0); > + else > + ensure_full_index(istate); > +} These two methods become very simple. Excellent. -Stolee