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

Re: [RFC] The design of new pathspec features

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 29, 2013, 16:27 UTC
Message-ID
<7vd2worm3q.fsf@alter.siamese.dyndns.org>
In-Reply-To
<7vk3qwrmea.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 21 quoted lines
> Duy Nguyen <pclouds@gmail.com> writes:
>
>> On Tue, Jan 29, 2013 at 11:35 AM, Duy Nguyen <pclouds@gmail.com> wrote:
>>> :(glob) magic
>>> =============
>>>
>>> This magic is for people who want globbing. However, it does _not_ use
>>> the same matching mechanism the non-magic pathspec does today. It uses
>>> wildmatch(WM_PATHNAME), which basically means '*' does not match
>>> slashes and "**" does.
>>>
>>> Global option --glob-pathspecs is added to add :(glob) to all
>>> pathspec. :(literal) magic overrides this global option.
>>
>> I forgot one thing. The current pathspec behavior, the pattern "[a-z]"
>> would match a file named "[a-z]" (iow, wildcards are also considered
>> literal characters).
>
> That sounds like a blatant bug to me (unless you are talking about
> "literal" case).  We should fix it before we include it in any
> released version, I think.
Ah, no, I misread what you meant.

Yes, historically when matching a path with a pattern "a/b[c-d]/e", we tried to first literally match the path with it (this allows the path "a/b[c-d]/e" to match with the pattern), and if it did not match, used fnmatch(3) to allow "a/bc/e" to also match. This was an ugly hack to cope with the possiblity that such a funny path is actually used in projects.

With :(literal) magic and its friends you are working into the system, the hack should disappear at the same time when you stop running fnmatch(3) without FNM_PATHNAME. That should happen no later than Git 2.0.

But until then, we should keep matching both paths "a/bc/e" and "a/b[c-d]/e" with pattern "a/b[c-d]/e", for backward compatibility.

Sorry about the earlier confusion.
Previous: Junio C Hamano
Message 10 of 10 in “[RFC] The design of new pathspec features”
  1. Duy NguyenJan 29, 2013
  2. Junio C HamanoJan 29, 2013
  3. Duy NguyenJan 29, 2013
  4. Junio C HamanoJan 29, 2013
  5. Junio C HamanoJan 29, 2013
  6. Duy NguyenJan 29, 2013
  7. Junio C HamanoJan 29, 2013
  8. Duy NguyenJan 29, 2013
  9. Junio C HamanoJan 29, 2013
  10. Junio C HamanoJan 29, 2013

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.