From: Bruce Stephens Date: Thu, 15 Nov 2007 20:15:19 GMT Subject: Re: Odd .gitignore behaviour Message-ID: <80ir43e04o.fsf@tiny.isode.net> In-Reply-To: Linus Torvalds writes: [...] > So what you describe sounds wrong. > > But my quick test didn't actually support the behaviour you see. In this > situation: > > [torvalds@woody git-test]$ cat .gitignore > a* > [torvalds@woody git-test]$ cat subdir/.gitignore > !a-ok > [torvalds@woody git-test]$ find * > all-files > subdir > subdir/a-ok > [torvalds@woody git-test]$ git ls-files -o --exclude-per-directory=.gitignore > .gitignore > subdir/.gitignore > subdir/a-ok > > ie we *do* show "showdir/a-ok" (but we don't show "all-files") because > a-ok is explicitly marked to be not ignored by a higher-priority rule. OK, and if I say "git add subdir/a-ok" I get no error, as expected. So extend it just a tiny bit, moving a-ok down a directory and using the negative pattern "!subsubdir/a-ok" to match: brs% cat .gitignore a* brs% cat subdir/.gitignore !subsubdir/a-ok brs% find * all-files subdir subdir/.gitignore subdir/subsubdir subdir/subsubdir/a-ok subdir/a-ok brs% git ls-files -o --exclude-per-directory=.gitignore .gitignore subdir/.gitignore subdir/subsubdir/a-ok brs% git add subdir/subsubdir/a-ok The following paths are ignored by one of your .gitignore files: subdir/subsubdir/a-ok Use -f if you really want to add them. fatal: no files added So I think the output from git-ls-files is as expected (as I interpret the manpage and your explanation). So is git-add just using some different code? [...]