Re: Bug: git ls-files and ignored directories
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 1, 2012, 16:03 UTC
- Message-ID
- <7vr4tz3tpw.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120601093757.GE32340@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 6 quoted lines
> No, I don't think anybody is working on it at the moment (at least I > do not see anything near the time of that old discussion, nor do I > recall it being discussed since). > > +cc Clemens, in case he had any work-in-progress as a result that did > not end up getting published.
I think the way the codepath for -i feeds path to excluded() is wrong.
The excluded() interface relies on the fact that the caller has already checked foo/ before calling it for foo/bar; when asked to see if "foo/bar" is excluded, it does not consider if "foo/" is excluded---the caller should have already checked it.
The loop for cached/stage case in builtin/ls-files.c::show_files() needs to learn to be more careful when DIR_SHOW_IGNORED is set in dir->flags. It needs to call a new helper function that notices that the check is walking into a different directory from the path it checked last, and feed leading directories to excluded(), or something like that, instead of directly calling !excluded().