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

Re: [PATCH 2/4] pathspec: do exact comparison on the leading non-wildcard part

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Nov 20, 2012, 13:09 UTC
Message-ID
<CACsJy8DqTR12sckwMm_Zzv2UbdX6jvvyFm3Fx9-b8a-NVXWL9g@mail.gmail.com>
In-Reply-To
<7vzk2duw3m.fsf@alter.siamese.dyndns.org>
On Tue, Nov 20, 2012 at 3:54 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 8 quoted lines
> How would we protect this optimization from future breakages?
>
> Once we start using FNM_PERIOD, this becomes unsafe, as the simple
> part in "foo/bar*baz" would be "foo/bar" with remainder "*baz".
>
> The pattern "foo/bar*baz" should match "foo/bar.baz" with FNM_PERIOD
> set.  But with this optimization, fnmatch is fed pattern="*baz",
> string=".baz" and they would not match.

The first question is how FNM_PERIOD comes in the first place without breaking the current syntax. I guess we just turn off the optimization if FNM_PERIOD is used.

My secret "plan" is to convert all fnmatch() calls to git_fnmatch() then replace fnmatch() with wildmatch() and move these optimization down to wildmatch(). I think we can handle FNM_PERIOD case better down there because string is still "foo/bar.baz".

-- 
Duy
Previous: Junio C HamanoNext: Nguyễn Thái Ngọc Duy
Message 6 of 11 in “Some pathspec wildcard optimization”
  1. 0/4 Some pathspec wildcard optimizationNguyễn Thái Ngọc Duy, Nov 18, 2012
  2. 1/4 pathspec: save the non-wildcard length partNguyễn Thái Ngọc Duy, Nov 18, 2012
  3. Junio C HamanoNov 19, 2012
  4. 2/4 pathspec: do exact comparison on the leading non-wildcard partNguyễn Thái Ngọc Duy, Nov 18, 2012
  5. Junio C HamanoNov 19, 2012
  6. Nguyen Thai Ngoc DuyNov 20, 2012
  7. 3/4 pathspec: apply "*.c" optimization from excludeNguyễn Thái Ngọc Duy, Nov 18, 2012
  8. Junio C HamanoNov 19, 2012
  9. Nguyen Thai Ngoc DuyNov 20, 2012
  10. Junio C HamanoNov 20, 2012
  11. 4/4 tree_entry_interesting: do basedir compare on wildcard patterns when possibleNguyễn Thái Ngọc Duy, Nov 18, 2012

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.