]> git.ipfire.org Git - thirdparty/git.git/commitdiff
read-cache: ensure full index
authorDerrick Stolee <dstolee@microsoft.com>
Thu, 1 Apr 2021 01:49:58 +0000 (01:49 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Apr 2021 20:47:42 +0000 (13:47 -0700)
Before iterating over all cache entries, ensure that a sparse index is
expanded to a full index to avoid unexpected behavior.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
read-cache.c

index 3698bc7bf77d9d562d8cf74c8ea04912a185d48d..a9dcf0ab4f781b83f1a3f4a11278353718b7a122 100644 (file)
@@ -1577,6 +1577,8 @@ int refresh_index(struct index_state *istate, unsigned int flags,
         */
        preload_index(istate, pathspec, 0);
        trace2_region_enter("index", "refresh", NULL);
+       /* TODO: audit for interaction with sparse-index. */
+       ensure_full_index(istate);
        for (i = 0; i < istate->cache_nr; i++) {
                struct cache_entry *ce, *new_entry;
                int cache_errno = 0;
@@ -2498,6 +2500,8 @@ int repo_index_has_changes(struct repository *repo,
                diff_flush(&opt);
                return opt.flags.has_changes != 0;
        } else {
+               /* TODO: audit for interaction with sparse-index. */
+               ensure_full_index(istate);
                for (i = 0; sb && i < istate->cache_nr; i++) {
                        if (i)
                                strbuf_addch(sb, ' ');