···436437void fill_stat_cache_info(struct index_state *istate, struct cache_entry *ce, struct stat *st);
43800000000439#define REFRESH_REALLY (1 << 0) /* ignore_valid */
440#define REFRESH_UNMERGED (1 << 1) /* allow unmerged */
441#define REFRESH_QUIET (1 << 2) /* be quiet about it */
···436437void fill_stat_cache_info(struct index_state *istate, struct cache_entry *ce, struct stat *st);
438439+/*
440+ * Fill members of st by members of sd enough to convince match_stat()
441+ * to consider that they match. It should be usable as a replacement
442+ * for lstat() for a tracked path that is known to be up-to-date via
443+ * some out-of-line means (like fsmonitor).
444+ */
445+int fake_lstat(const struct cache_entry *ce, struct stat *st);
446+447#define REFRESH_REALLY (1 << 0) /* ignore_valid */
448#define REFRESH_UNMERGED (1 << 1) /* allow unmerged */
449#define REFRESH_QUIET (1 << 2) /* be quiet about it */
+27
read-cache.c
···197 }
198}
199000000000000000000000000000200static int ce_compare_data(struct index_state *istate,
201 const struct cache_entry *ce,
202 struct stat *st)
···47void fill_stat_data(struct stat_data *sd, struct stat *st);
4849/*
0000000050 * Return 0 if st is consistent with a file not having been changed
51 * since sd was filled. If there are differences, return a
52 * combination of MTIME_CHANGED, CTIME_CHANGED, OWNER_CHANGED,
···47void fill_stat_data(struct stat_data *sd, struct stat *st);
4849/*
50+ * The inverse of the above. When we know the cache_entry that
51+ * contains sd is up-to-date, but still need to pretend we called
52+ * lstat() to learn that fact, this function fills "st" enough to
53+ * fool ie_match_stat().
54+ */
55+void fake_lstat_data(const struct stat_data *sd, struct stat *st);
56+57+/*
58 * Return 0 if st is consistent with a file not having been changed
59 * since sd was filled. If there are differences, return a
60 * combination of MTIME_CHANGED, CTIME_CHANGED, OWNER_CHANGED,