Subject: Re: [PATCH v3 04/24] read-cache: clear version in discard_index()

From: Junio C Hamano <[email-masked]>
Date: Tue, 20 Aug 2013 12:34:50 -0700

Thomas Gummerer <[email-masked]> writes:

> All fields except index_state->version are reset in discard_index.
> Reset the version too.

What is the practical consequence of not clearing this field?  I
somehow have a feeling that this was done deliberately, so that we
can stick to the version of the index file format better, once the
user said "update-index --index-version $N" to set it up.  I suspect
that the patch would affect a codepath that does read_cache(), calls
discard_index(), populates the index and then does write_cache().
We stick to the version the user specified earlier in our current
code, while the patched code will revert to whatever default built
into your Git binary, no?

>
> Signed-off-by: Thomas Gummerer <[email-masked]>
> ---
>  read-cache.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/read-cache.c b/read-cache.c
> index de0bbcd..1e22f6f 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -1558,6 +1558,7 @@ int discard_index(struct index_state *istate)
>  	for (i = 0; i < istate->cache_nr; i++)
>  		free(istate->cache[i]);
>  	resolve_undo_clear_index(istate);
> +	istate->version = 0;
>  	istate->cache_nr = 0;
>  	istate->cache_changed = 0;
>  	istate->timestamp.sec = 0;