| #ifndef SPARSE_INDEX_H__ |
| #define SPARSE_INDEX_H__ |
| |
| struct index_state; |
| #define SPARSE_INDEX_MEMORY_ONLY (1 << 0) |
| int is_sparse_index_allowed(struct index_state *istate, int flags); |
| int convert_to_sparse(struct index_state *istate, int flags); |
| void ensure_correct_sparsity(struct index_state *istate); |
| void clear_skip_worktree_from_present_files(struct index_state *istate); |
| |
| /* |
| * Some places in the codebase expect to search for a specific path. |
| * This path might be outside of the sparse-checkout definition, in |
| * which case a sparse-index may not contain a path for that index. |
| * |
| * Given an index and a path, check to see if a leading directory for |
| * 'path' exists in the index as a sparse directory. In that case, |
| * expand that sparse directory to a full range of cache entries and |
| * populate the index accordingly. |
| */ |
| void expand_to_path(struct index_state *istate, |
| const char *path, size_t pathlen, int icase); |
| |
| struct repository; |
| int set_sparse_index_config(struct repository *repo, int enable); |
| |
| struct pattern_list; |
| |
| /** |
| * Scan the given index and compare its entries to the given pattern list. |
| * If the index is sparse and the pattern list uses cone mode patterns, |
| * then modify the index to contain the all of the file entries within that |
| * new pattern list. This expands sparse directories only as far as needed. |
| * |
| * If the pattern list is NULL or does not use cone mode patterns, then the |
| * index is expanded to a full index. |
| */ |
| void expand_index(struct index_state *istate, struct pattern_list *pl); |
| |
| void ensure_full_index(struct index_state *istate); |
| |
| #endif |