Thread (13 messages) 13 messages, 6 authors, 2016-06-15

Re: Git 2.7.0 gitignore behaviour regression

From: brian m. carlson <hidden>
Date: 2016-06-15 23:07:39

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

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help