On Tue, Jan 05, 2016 at 10:06:02AM -0500, Jeff King wrote: > Thanks for giving a clear example. This bisects to Duy's 57534ee (dir.c: > don't exclude whole dir prematurely if neg pattern may match, > 2015-09-21). AFAICT (and I don't recall looking over this patch > previously), what you are seeing is the intended effect of the patch. > > Your final line unignores stuff inside of "a", so we're reporting it (if you gave > "-uall", you'd see the actual file "a/b"). Older versions of git > generally optimized out looking inside "a/" at all. This created a > hassle when people wanted to do things like: > > a/ > !a/precious-file > > in their .gitignore. I think there's still a bug in the code here. If you do git init mkdir -p base/a/ printf 'base/a/\n!base/a/b.txt\n' >.gitignore git add .gitignore git commit -m 'Add .gitignore' >base/a/b.txt git add base/a/b.txt git commit -m 'Add base/a/b.txt' >base/a/c.txt git status --porcelain git status outputs base/a/c.txt as unknown, when it should be ignored. We saw this in a repository at $DAYJOB. -- brian m. carlson / brian with sandals: Houston, Texas, US +1 832 623 2791 | https://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187