Re: [PROPOSAL] .gitignore syntax modification
From: Kevin Ballard <hidden>
Date: 2016-06-15 22:49:44
On Oct 8, 2010, at 2:58 PM, Maaartin wrote:
You don't. You can do something like *.xcodeproj/* !.xcodeproj/subdir_with_project .xcodeproj/subdir_with_project/* !.xcodeproj/subdir_with_project/*.pbxproj I'm a beginner but I just stumbled upon this very problem five minutes ago.
That's not the right layout. I'd have to do *.xcodeproj/* !*.xcodeproj/project.pbxproj */*.xcodeproj/* !*/*.xcodeproj/project.pbxproj And so on, once for each possible level of nesting.
The reason for git ignoring everything in the directory without ever looking there is efficiency.
That's not what's happening either. That happens if you ignore the directory itself, such as *.xcodeproj/ That won't look in the directory at all to match non-ignore patterns. The problem I'm talking about is simply that you cannot write a pattern that includes a slash and have that pattern match at any nesting level. Upon further reflection, if we stick with platform-provided fnmatch() we don't have to special-case a prefixed **/. We could simply define patterns as always matching in that way, and you can use the already-existing prefixed / to root it at the current level. So if my pattern looks like *.xcodeproj/* Then it will attempt to match this pattern against the last 2 path components of any path rooted in this directory. It can simply count the slashes to determine the number of path components. If I really want it to just match *.xcodeproj files in the current directory then my pattern should look like /*.xcodeproj/* -Kevin Ballard