On Mon, Jan 22, 2024 at 09:45:46PM +0100, Raúl Núñez de Arenas Coronado wrote: > But when using 'git ls-files --others --exclude-from=<file>', when > <file> is one of those .gitignore files present in a subdir, makes the > command use the patterns in that .gitgnore (in this case, the "*") > against ALL files that would otherwise be listed by using '--others'. > > In short: using 'git ls-files --others > --exclude-from=subdir/.gitignore' results in an empty listing if > subdir/.gitignore contains '*". IMHO that pattern should be applied to > the subdir contents and not to the contents of the current directory. > That would be consistent with how git uses .gitignore files in > subfolders. I think Junio covered this with his example, and everything is behaving as intended (my mental model is that "--exclude-from" is something like .git/info/exclude or the core.excludesFile option). But... > The obvious solution is to use --exclude-per-directory but it is > deprecated in favor of --exclude-standard and --exclude-standard shows > the same behaviour of --exclude-from=subdir/.gitignore!!! ...I'm not sure what's going on here. I would think that both --exclude-standard and --exclude-per-directory would do what you want. For example, I get: [setup] $ git init $ mkdir subdir $ echo '*' >subdir/.gitignore $ git add -f subdir/.gitignore && git commit -m "add gitignore" $ touch subdir/file file [no exclusions] $ git ls-files -o file subdir/file [use .gitignore] $ git ls-files --exclude-per-directory=.gitignore -o file [using standard excludes] $ git ls-files --exclude-standard -o file Do you get different results from that toy repo? If not, then what is different about your main repo? Do you perhaps have a stray "*" match somewhere in .git/info/exclude, etc? Or are you still providing --exclude-from in addition to --exclude-standard? -Peff PS I hadn't realized that --exclude-per-directory had been marked as deprecated. I do agree with e750951e74 (ls-files: guide folks to --exclude-standard over other --exclude* options, 2023-01-13) in its goal of guiding people to the easiest option, but I don't know that there has been any discussion about removing the other ones.