Skip to content
  • Junio C Hamano's avatar
    ls-files -i: pay attention to exclusion of leading paths · eb41775e
    Junio C Hamano authored
    
    
    "git ls-files --exclude=t/ -i" does not show paths in directory t/
    that have been added to the index, but it should.
    
    The excluded() API was designed for callers who walk the tree from
    the top, checking each level of the directory hierarchy as it
    descends if it is excluded, and not even bothering to recurse into
    an excluded directory.  This would allow us optimize for a common
    case by not having to check if the exclude pattern "foo/" matches
    when looking at "foo/bar", because the caller should have noticed
    that "foo" is excluded and did not even bother to read "foo/bar"
    out of opendir()/readdir() to call it.
    
    The code for "ls-files -i" however walks the index linearly, feeding
    paths without checking if the leading directory is already excluded.
    
    Introduce a helper function path_excluded() to let this caller
    properly call excluded() check for higher hierarchies as necessary.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    eb41775e