Subject: Re: [PATCH] Perform minimal stat comparison when some stat fields are not set

From: Johannes Sixt <[email-masked]>
Date: Thu, 06 Dec 2012 08:21:03 +0100

Am 12/6/2012 2:09, schrieb Robin Rosenberg:
>> Robin Rosenberg <[email-masked]> writes:
>>> 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.

Is this meant to better support C git and JGit working on the same repository?

MinGW git sets these two stat fields to zero as well. But we have less of
an interoparability problem between different git implementations in
practice on Windows, I think.

>> Besides, is it sane to do this unconditionally to affect people who
>> do not use JGit?
> 
> Would a config option like core.minstat be better? The name would imply no dynamic detection.

A configuration option is the way to go. We already have core.trustctime,
core.symlinks, core.filemode, core.ignoreCygwinFSTricks.

But your new mode is not "minimal". In some implementations or on some
filesystems, even more bits of stat information could be meaningless
(think of atime, rdev, nlink, uid, gid). Perhaps core.trustdevandino? Or
an enumeration core.ignoreCacheStat=ctime,dev,ino?

-- Hannes