Re: [PATCH] Perform minimal stat comparison when some stat fields are not set
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 5, 2012, 23:43 UTC
- Message-ID
- <7vhao0jc98.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1354742425-71417-1-git-send-email-robin.rosenberg@dewire.com>
Robin Rosenberg <robin.rosenberg@dewire.com> writes:
Show 22 quoted lines
> At least JGit does sets uid, gid, ctime, ino and dev fields to zero > on update. To Git this looks like the stat data does not match and > a full file compare will be forced even it size and mtime match. This > is in practice unnecessary. Sense JGit's presence by checking if ino > and dev is zero. > > Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com> > --- > read-cache.c | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/read-cache.c b/read-cache.c > index fda78bc..6f13a22 100644 > --- a/read-cache.c > +++ b/read-cache.c > @@ -197,21 +197,26 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st) > } > if (ce->ce_mtime.sec != (unsigned int)st->st_mtime) > changed |= MTIME_CHANGED; > - if (trust_ctime && ce->ce_ctime.sec != (unsigned int)st->st_ctime) > + > + int minimal_stat = (ce->ce_ino == 0 && ce->ce_dev == 0);
decl-after-stmt.
Besides, is it sane to do this unconditionally to affect people who do not use JGit?