Re: [PATCH 4/4] Fix ie_match_stat for non-checked-out submodule
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 2, 2008, 21:57 UTC
- Message-ID
- <7vod7owerk.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1209735336-4690-5-git-send-email-pkufranky@gmail.com>
Ping Yin <pkufranky@gmail.com> 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); }