On Wed, Feb 7, 2018 at 11:59 PM, Ben Peart <peartben@xxxxxxxxx> wrote: > diff --git a/dir.c b/dir.c > index 7c4b45e30e..d431da46f5 100644 > --- a/dir.c > +++ b/dir.c > @@ -1773,7 +1773,7 @@ static enum path_treatment treat_path(struct > dir_struct *dir, > if (!de) > return treat_path_fast(dir, untracked, cdir, istate, path, > baselen, pathspec); > - if (is_dot_or_dotdot(de->d_name) || !strcmp(de->d_name, ".git")) > + if (is_dot_or_dotdot(de->d_name) || !fspathcmp(de->d_name, ".git")) > return path_none; > strbuf_setlen(path, baselen); > strbuf_addstr(path, de->d_name); > diff --git a/fsmonitor.c b/fsmonitor.c > index 0af7c4edba..019576f306 100644 > --- a/fsmonitor.c > +++ b/fsmonitor.c > @@ -118,8 +118,12 @@ static int query_fsmonitor(int version, uint64_t > last_update, struct strbuf *que > > static void fsmonitor_refresh_callback(struct index_state *istate, const > char *name) > { > - int pos = index_name_pos(istate, name, strlen(name)); > + int pos; > > + if (!verify_path(name)) > + return; > + > + pos = index_name_pos(istate, name, strlen(name)); > if (pos >= 0) { > struct cache_entry *ce = istate->cache[pos]; > ce->ce_flags &= ~CE_FSMONITOR_VALID; > It's very tempting considering that the amount of changes is much smaller. But I think we should go with my version. The hope is when a _new_ call site appears, the author would think twice before passing zero or one to the safe_path argument. > diff --git a/t/t7519-status-fsmonitor.sh b/t/t7519-status-fsmonitor.sh > index eb2d13bbcf..756beb0d8e 100755 > --- a/t/t7519-status-fsmonitor.sh > +++ b/t/t7519-status-fsmonitor.sh > @@ -314,4 +314,43 @@ test_expect_success 'splitting the index results in the > same state' ' > test_cmp expect actual > ' > > +test_expect_success UNTRACKED_CACHE 'ignore .git changes when invalidating > UNTR' ' > + test_create_repo dot-git && > + ( > + cd dot-git && > + mkdir -p .git/hooks && > + : >tracked && > + : >modified && > + mkdir dir1 && > + : >dir1/tracked && > + : >dir1/modified && > + mkdir dir2 && > + : >dir2/tracked && > + : >dir2/modified && > + write_integration_script && > + git config core.fsmonitor .git/hooks/fsmonitor-test && > + git update-index --untracked-cache && > + git update-index --fsmonitor && > + GIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace-before" \ > + git status && > + test-dump-untracked-cache >../before > + ) && > + cat >>dot-git/.git/hooks/fsmonitor-test <<-\EOF && > + printf ".git\0" > + printf ".git/index\0" > + printf "dir1/.git\0" > + printf "dir1/.git/index\0" > + EOF > + ( > + cd dot-git && > + GIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace-after" \ > + git status && > + test-dump-untracked-cache >../after > + ) && > + grep "directory invalidation" trace-before >>before && > + grep "directory invalidation" trace-after >>after && > + # UNTR extension unchanged, dir invalidation count unchanged > + test_cmp before after > +' > + > test_done > > base-commit: 5be1f00a9a701532232f57958efab4be8c959a29 > -- > 2.15.0.windows.1 > -- Duy