From: Andreas Ericsson Date: Mon, 22 Sep 2008 11:53:45 GMT Subject: Re: ignoring files/directories in git Message-ID: <48D78749.3030509@op5.se> In-Reply-To: <48D77643.1090908@panasas.com> Boaz Harrosh wrote: > Dmitry Potapov wrote: >> On Mon, Sep 22, 2008 at 10:37:00AM +0300, Boaz Harrosh wrote: >>> I have 1.6.0.1 I compiled here, and it has the same problem. So it is >>> a very recent fix >> I certainly tested 1.6.0.1 and does not have this problem, and it was >> fixed a long time ago: >> >> === >> commit d6b8fc303b389b026f2bf9918f6f83041488989b >> Author: Junio C Hamano >> Date: Thu Jan 31 01:17:48 2008 -0800 >> >> gitignore(5): Allow "foo/" in ignore list to match directory "foo" >> >> A pattern "foo/" in the exclude list did not match directory >> "foo", but a pattern "foo" did. This attempts to extend the >> exclude mechanism so that it would while not matching a regular >> file or a symbolic link "foo". In order to differentiate a >> directory and non directory, this passes down the type of path >> being checked to excluded() function. >> >> A downside is that the recursive directory walk may need to run >> lstat(2) more often on systems whose "struct dirent" do not give >> the type of the entry; earlier it did not have to do so for an >> excluded path, but we now need to figure out if a path is a >> directory before deciding to exclude it. This is especially bad >> because an idea similar to the earlier CE_UPTODATE optimization >> to reduce number of lstat(2) calls would by definition not apply >> to the codepaths involved, as (1) directories will not be >> registered in the index, and (2) excluded paths will not be in >> the index anyway. >> === >> >> The patch is included in 1.5.5. >> >> Dmitry >> -- > > Ok I found it. Regular subdirectories it works as you said, > but soft-link to a folder does not. Sorry for the noise i didn't > realize that in my test it was a simlink and not a full directory. > > Please don't fix it if it will hurt performance, I'm happy with > current solution as it is. Just maybe a small addition to the > .gitignore documentation perhaps. > It wouldn't hurt performance (noticeably) to change the lstat() call to a stat() call. It's slightly more work for the kernel, but assuming you don't have tens of thousands of symlinks it really won't make a difference. I'm not sure what other things would break from using stat() instead of lstat() in the exclude matching code though, so it's not so simple as just replacing it. -- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se Tel: +46 8-230225 Fax: +46 8-230231