Re: [PATCH v3 11/20] sparse-index: convert from full to sparse
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Mar 17, 2021, 13:43 UTC
- Message-ID
- <87wnu5zyif.fsf@evledraar.gmail.com>
- In-Reply-To
- <e41b14e03ebb143c874cc276adcbc36059f0c64e.1615912983.git.gitgitgadget@gmail.com>
On Tue, Mar 16 2021, Derrick Stolee via GitGitGadget wrote:
Show 31 quoted lines
> diff --git a/cache-tree.c b/cache-tree.c
> index 2fb483d3c083..5f07a39e501e 100644
> --- a/cache-tree.c
> +++ b/cache-tree.c
> @@ -6,6 +6,7 @@
> #include "object-store.h"
> #include "replace-object.h"
> #include "promisor-remote.h"
> +#include "sparse-index.h"
>
> #ifndef DEBUG_CACHE_TREE
> #define DEBUG_CACHE_TREE 0
> @@ -442,6 +443,8 @@ int cache_tree_update(struct index_state *istate, int flags)
> if (i)
> return i;
>
> + ensure_full_index(istate);
> +
> if (!istate->cache_tree)
> istate->cache_tree = cache_tree();
>
> diff --git a/cache.h b/cache.h
> index 759ca92e2ecc..69a32146cd77 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -251,6 +251,8 @@ static inline unsigned int create_ce_mode(unsigned int mode)
> {
> if (S_ISLNK(mode))
> return S_IFLNK;
> + if (mode == S_IFDIR)
> + return S_IFDIR;Does this actually need to be mode == S_IFDIR v.s. S_ISDIR(mode)? Those aren't the same thing...
> if (S_ISDIR(mode) || S_ISGITLINK(mode)) > return S_IFGITLINK;
...and if it can be S_ISDIR(mode) then this becomes just S_ISGITLINK(mode), but losing the "if" there makes me suspect that some dir == submodule heuristic is being broken somewhere..