On Wed, Jun 26, 2013 at 06:35:52PM -0400, Jeff King wrote: > I am curious how often Cygwin gives us the false positive. If it is > every time, then the check is not doing much good at all. Is it possible > for you to instrument stat_validity_check to report how often it does or > does not do anything useful? Maybe like this: diff --git a/read-cache.c b/read-cache.c index d5201f9..19dcb69 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1958,6 +1958,14 @@ void stat_validity_clear(struct stat_validity *sv) sv->sd = NULL; } +static int unchanged; +static int attempts; +static void print_stats(void) +{ + fprintf(stderr, "stat data was unchanged %d/%d\n", + unchanged, attempts); +} + int stat_validity_check(struct stat_validity *sv, const char *path) { struct stat st; @@ -1966,7 +1974,16 @@ int stat_validity_check(struct stat_validity *sv, const char *path) return sv->sd == NULL; if (!sv->sd) return 0; - return S_ISREG(st.st_mode) && !match_stat_data(sv->sd, &st); + if (!S_ISREG(st.st_mode)) + return 0; + if (!attempts++) + atexit(print_stats); + if (!match_stat_data(sv->sd, &st)) { + unchanged++; + return 1; + } + else + return 0; } void stat_validity_update(struct stat_validity *sv, int fd) Running "t3211 -v", I see things like: stat data was unchanged 3/3 stat data was unchanged 20/20 stat data was unchanged 2/2 Deleted branch yadda (was d1ff1c9). stat data was unchanged 8/8 ok 8 - peeled refs survive deletion of packed ref I am curious if you will see 0/20 or 19/20 there on Cygwin. -Peff -- 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