Re: [PATCH v2 05/20] sparse-index: implement ensure_full_index()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 12, 2021, 06:50 UTC
- Message-ID
- <xmqq1rckc1cb.fsf@gitster.g>
- In-Reply-To
- <399ddb0bad56c69ff9d9591f5e8eacf52cf50a15.1615404665.git.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 15 quoted lines
> void ensure_full_index(struct index_state *istate)
> {
> ...
> + int i;
> + tree = lookup_tree(istate->repo, &ce->oid);
> +
> + memset(&ps, 0, sizeof(ps));
> + ps.recursive = 1;
> + ps.has_wildcard = 1;
> + ps.max_depth = -1;
> +
> + read_tree_recursive(istate->repo, tree,
> + ce->name, strlen(ce->name),
> + 0, &ps,
> + add_path_to_index, full);Ævar, the assumption that led to your e68237bb (tree.h API: remove support for starting at prefix != "", 2021-03-08) closes the door for this code rather badly. Please work with Derrick to figure out what the best course of action would be.
Thanks.
Show 16 quoted lines
> + /* free directory entries. full entries are re-used */
> + discard_cache_entry(ce);
> + }
> +
> + /* Copy back into original index. */
> + memcpy(&istate->name_hash, &full->name_hash, sizeof(full->name_hash));
> + istate->sparse_index = 0;
> + free(istate->cache);
> + istate->cache = full->cache;
> + istate->cache_nr = full->cache_nr;
> + istate->cache_alloc = full->cache_alloc;
> +
> + free(full);
> +
> + trace2_region_leave("index", "ensure_full_index", istate->repo);
> }