Re: [PATCH] mv: refresh stat info for moved entry
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 25, 2022, 23:29 UTC
- Message-ID
- <xmqqk0ch8vc3.fsf@gitster.g>
- In-Reply-To
- <pull.1187.git.1648173419533.gitgitgadget@gmail.com>
"Victoria Dye via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 10 quoted lines
> diff --git a/read-cache.c b/read-cache.c > index 1ad56d02e1d..2c5ccc48d6c 100644 > --- a/read-cache.c > +++ b/read-cache.c > @@ -148,6 +148,7 @@ void rename_index_entry_at(struct index_state *istate, int nr, const char *new_n > untracked_cache_remove_from_index(istate, old_entry->name); > remove_index_entry_at(istate, nr); > add_index_entry(istate, new_entry, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE); > + refresh_cache_entry(istate, new_entry, CE_MATCH_REFRESH); > }
This is a bit unforunate.
If we are renaming "foo" to "bar", I wonder if we can grab the cached stat info before calling remove_index_entry_at() for "foo" and copy it to the new entry we create for "bar". After all, we would be making a corresponding change to rename from "foo" to "bar" at the filesystem level, too, no?
Well, we are already doing that by calling copy_cache_entry(). So why do we further need to refresh the cache entry in the first place? There is something fishy going on, isn't it?
Puzzling...
In any case, refresh_cache_entry() either returns ce or create a newly allocated entry, so you'd want to first refresh and then the add the cache entry returned from the function to the index, I think.
Thanks.