git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/5] treewide: rename 'struct exclude' to 'struct path_pattern'

From
Jeff King <peff@peff.net>
Date
Sep 5, 2019, 06:55 UTC
Message-ID
<20190905065518.GD21450@sigill.intra.peff.net>
In-Reply-To
<8cdffbd1c82c34a7dbdb18cb396e5e422889aad6.1567533893.git.gitgitgadget@gmail.com>
On Tue, Sep 03, 2019 at 11:04:55AM -0700, Derrick Stolee via GitGitGadget wrote:
Show 17 quoted lines
> From: Derrick Stolee <dstolee@microsoft.com>
> 
> 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
Previous: Derrick Stolee via GitGitGadgetNext: Junio C Hamano
Message 3 of 11 in “Refactor excludes library”
  1. 0/5 Refactor excludes libraryDerrick Stolee via GitGitGadget, Sep 3, 2019
  2. 1/5 treewide: rename 'struct exclude' to 'struct path_pattern'Derrick Stolee via GitGitGadget, Sep 3, 2019
  3. Jeff KingSep 5, 2019
  4. Junio C HamanoSep 5, 2019
  5. 2/5 treewide: rename 'struct exclude_list' to 'struct pattern_list'Derrick Stolee via GitGitGadget, Sep 3, 2019
  6. 3/5 treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'Derrick Stolee via GitGitGadget, Sep 3, 2019
  7. 5/5 unpack-trees: rename 'is_excluded_from_list()'Derrick Stolee via GitGitGadget, Sep 3, 2019
  8. Elijah NewrenSep 4, 2019
  9. 4/5 treewide: rename 'exclude' methods to 'pattern'Derrick Stolee via GitGitGadget, Sep 3, 2019
  10. Elijah NewrenSep 4, 2019
  11. Junio C HamanoSep 6, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.