Skip to content

Commit

Permalink
fsmonitor: refactor untracked-cache invalidation
Browse files Browse the repository at this point in the history
Update fsmonitor_refresh_callback() to use the new
untracked_cache_invalidate_trimmed_path() to invalidate
the cache using the observed pathname without needing to
modify the caller's buffer.

Previously, we modified the caller's buffer when the observed pathname
contained a trailing slash (and did not restore it).  This wasn't a
problem for the single use-case caller, but felt dirty nontheless.  In
a later commit we will want to invalidate case-corrected versions of
the pathname (using possibly borrowed pathnames from the name-hash or
dir-name-hash) and we may not want to keep the tradition of altering
the passed-in pathname.

Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
jeffhostetler authored and gitster committed Feb 26, 2024
1 parent 3e4ffda commit 48f4cd7
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions fsmonitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -271,21 +271,16 @@ static void fsmonitor_refresh_callback(struct index_state *istate, char *name)

if (name[len - 1] == '/') {
handle_path_with_trailing_slash(istate, name, pos);

/*
* We need to remove the traling "/" from the path
* for the untracked cache.
*/
name[len - 1] = '\0';
} else {
handle_path_without_trailing_slash(istate, name, pos);
}

/*
* Mark the untracked cache dirty even if it wasn't found in the index
* as it could be a new untracked file.
* as it could be a new untracked file. (Let the untracked cache
* layer silently deal with any trailing slash.)
*/
untracked_cache_invalidate_path(istate, name, 0);
untracked_cache_invalidate_trimmed_path(istate, name, 0);
}

/*
Expand Down

0 comments on commit 48f4cd7

Please sign in to comment.