Re: [PATCH] ls-files: fix overeager pathspec optimization
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2016-06-15 22:47:59
On Fri, 8 Jan 2010, Junio C Hamano wrote:
Since "git add" uses the exact same codepath to find the untracked files that match the pathspecs, I expected the "fix" will make it complain about "t/gomi" being ignored. Not so.
No. Since 't' is ignored, it won't even do a readdir() in there. And since it didn't do a readdir() in there, it won't find any files in there to add to the ignored list. And that's how the "git add" logic for "apparently ignored" files works: it looks at whether the list of ignored files is empty or not.
Actually, it does start ignoring t/gomi (the index does not have t/gomi after the above sequence with the patch), but lack of the error message makes it a rather unfortunate regression---it works as specified in the sense that ignored paths are not added to the index unless --forced, but it does so without telling the user about it.
I have this memory that _used_ to have a per-filename flag in "git add" that checked if that particular filename component was used or not. But now it just looks at 'dir->ignored_nr' and 'dir->ignored[]'. [ Digging back in history.. Yes: commit e96980ef ] Linus