From: brian m. carlson Date: Thu, 07 Jan 2016 23:44:55 GMT Subject: Re: Git 2.7.0 gitignore behaviour regression Message-ID: <20160107234455.GB265296@vauxhall.crustytoothpaste.net> In-Reply-To: <20160105150602.GA4130@sigill.intra.peff.net> 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