In particular, some of the stat info, is not available to Java programs. JGit sets the uid, gid, dev and ino to all ones to indicate this. Recognose this special value and ignore changes in those values when the on-disk value has all bits set. --- read-cache.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) This patch is needed for previous one to apply. This approach to silencing index stats diff when JGit has been used does not require special options and one could perhaps argue that any other language without portable access to these fields should set the fields just like JGit does. The the flag approach is selected, then these patches should be squashed together. diff --git a/read-cache.c b/read-cache.c index 3f58711..45083ab 100644 --- a/read-cache.c +++ b/read-cache.c @@ -210,10 +210,10 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st) changed |= CTIME_CHANGED; #endif - if (ce->ce_uid != (unsigned int) st->st_uid || - ce->ce_gid != (unsigned int) st->st_gid) + if ((ce->ce_uid != ~0u && ce->ce_uid != (unsigned int) st->st_uid) || + (ce->ce_gid != ~0u && ce->ce_gid != (unsigned int) st->st_gid)) changed |= OWNER_CHANGED; - if (ce->ce_ino != (unsigned int) st->st_ino) + if (ce->ce_ino != ~0u && ce->ce_ino != (unsigned int) st->st_ino) changed |= INODE_CHANGED; #ifdef USE_STDEV @@ -222,7 +222,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st) * clients will have different views of what "device" * the filesystem is on */ - if (ce->ce_dev != (unsigned int) st->st_dev) + if (ce->ce_dev != ~0u && ce->ce_dev != (unsigned int) st->st_dev) changed |= INODE_CHANGED; #endif -- 1.6.3.rc2.1.g4f9e8.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html