Skip to content

Commit 6d285c8

Browse files
committed
Merge branch 'jc/diff-cached-fsmonitor-fix' into seen
The optimization based on fsmonitor in the "diff --cached" codepath is resurrected with the "fake-lstat" introduced earlier. It is unknown if the optimization is worth resurrecting, but in case... * jc/diff-cached-fsmonitor-fix: diff-lib: fix check_removed() when fsmonitor is active
2 parents 63943ef + 811c9c2 commit 6d285c8

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

diff-lib.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,13 @@
3838
*/
3939
static int check_removed(const struct cache_entry *ce, struct stat *st)
4040
{
41-
if (lstat(ce->name, st) < 0) {
41+
int stat_err;
42+
43+
if (!(ce->ce_flags & CE_FSMONITOR_VALID))
44+
stat_err = lstat(ce->name, st);
45+
else
46+
stat_err = fake_lstat(ce, st);
47+
if (stat_err < 0) {
4248
if (!is_missing_file_error(errno))
4349
return -1;
4450
return 1;

0 commit comments

Comments
 (0)