]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fsmonitor: refactor untracked-cache invalidation
authorJeff Hostetler <jeffhostetler@github.com>
Mon, 26 Feb 2024 21:39:18 +0000 (21:39 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Feb 2024 23:34:02 +0000 (15:34 -0800)
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>
fsmonitor.c

index 364198d258ff45d921363590923e5ca7b7fd10aa..2787f7ca5d1bf06043c2db26e03886e5ffb96e32 100644 (file)
@@ -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);
 }
 
 /*