From: Junio C Hamano Date: Fri, 02 May 2008 21:57:19 GMT Subject: Re: [PATCH 4/4] Fix ie_match_stat for non-checked-out submodule Message-ID: <7vod7owerk.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1209735336-4690-5-git-send-email-pkufranky@gmail.com> Ping Yin writes: > For submodules non checked out, ie_match_stat should always return 0. > So in this case avoid calling is_racy_timestamp. It is conceptually wrong to have this check in that function, I think. Look at what ce_match_stat_basic() does. For S_IFGITLINK entries, we do not even compare the timestamps, so is_racy_timestamp() check should not even care and should return Ok for them. Perhaps this patch would be a better, in that it covers the other caller on the write_index() callpath as well. --- diff --git a/read-cache.c b/read-cache.c index a92b25b..0a0ea3b 100644 --- a/read-cache.c +++ b/read-cache.c @@ -258,6 +258,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st) static int is_racy_timestamp(const struct index_state *istate, struct cache_entry *ce) { return (istate->timestamp && + !S_ISGITLINK(ce->ce_mode) && ((unsigned int)istate->timestamp) <= ce->ce_mtime); }