Skip to content
  • Johannes Schindelin's avatar
    mark_fsmonitor_valid(): mark the index as changed if needed · b5a81697
    Johannes Schindelin authored and Junio C Hamano's avatar Junio C Hamano committed
    Without this bug fix, t7519's four "status doesn't detect unreported
    modifications" test cases would fail occasionally (and, oddly enough,
    *a lot* more frequently on Windows).
    
    The reason is that these test cases intentionally use the side effect of
    `git status` to re-write the index if any updates were detected: they
    first clean the worktree, run `git status` to update the index as well
    as show the output to the casual reader, then make the worktree dirty
    again and expect no changes to reported if running with a mocked
    fsmonitor hook.
    
    The problem with this strategy was that the index was written during
    said `git status` on the clean worktree for the *wrong* reason: not
    because the index was marked as changed (it wasn't), but because the
    recorded mtimes were racy with the index' own mtime.
    
    As the mtime granularity on Windows is 100 nanoseconds (see e.g.
    https://docs.microsoft.com/en-us/windows/desktop/SysInfo/file-times),
    the mtimes of the file...
    b5a81697