On Tue, Sep 03, 2019 at 11:04:55AM -0700, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> > > The first consumer of pattern-matching filenames was the > .gitignore feature. In that context, storing a list of patterns > as a list of 'struct exclude' items makes sense. However, the > sparse-checkout feature then adopted these structures and methods, > but with the opposite meaning: these patterns match the files > that should be included! > > It would be clearer to rename this entire library as a "pattern > matching" library, and the callers apply exclusion/inclusion > logic accordingly based on their needs. > > This commit renames 'struct exclude' to 'struct path_pattern' > and renames several variable names to match. 'struct pattern' > was already taken by attr.c, and this more completely describes > that the patterns are specific to file paths. I agree that the current name is overly restrictive, and this is a step in the right direction. However, when I see path_pattern that makes me think of our command-line pathspecs. I wonder if there's a name that could more clearly distinguish the two. Or if it's sufficient to just become Git jargon that "pathspec" is the command-line one and "path_pattern" is the file-based one (we're at least pretty consistent about the former already). I think one could also make an argument that the name collision is a sign that these two things should actually share both syntax and implementation, since we're exposing too similar-but-not-quite versions of the same idea to users. But given the compatibility issues, it's probably not worth changing the user facing parts at this point (and I also haven't thought too hard about it; there may be reasons why the two _should_ differ). -Peff