untracked cache: fix entry invalidation
commit73f9145fbf748d39dd1e145ec846a5481cf7a36f
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Wed, 19 Aug 2015 13:01:26 +0000 (19 20:01 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Aug 2015 17:40:55 +0000 (19 10:40 -0700)
tree03b744e5dd52261b2fd5db5e7d240d3be976b576
parent2e5910f27695b1b24e8a6870940bfac2a03ef0d7
untracked cache: fix entry invalidation

First, the current code in untracked_cache_invalidate_path() is wrong
because it can only handle paths "a" or "a/b", not "a/b/c" because
lookup_untracked() only looks for entries directly under the given
directory. In the last case, it will look for the entry "b/c" in
directory "a" instead. This means if you delete or add an entry in a
subdirectory, untracked cache may become out of date because it does not
invalidate properly. This is noticed by David Turner.

The second problem is about invalidation inside a fully untracked/excluded
directory. In this case we may have to invalidate back to root. See the
comment block for detail.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c
t/t7063-status-untracked-cache.sh