Re: [GSoC][RFC PATCH v4 3/5] builtin/refs: add list subcommand
From: Junio C Hamano <hidden>
Date: 2025-08-04 15:35:10
Phillip Wood [off-list ref] writes:
On 01/08/2025 16:49, Phillip Wood wrote:quoted
On 01/08/2025 15:43, Junio C Hamano wrote:quoted
Phillip Wood [off-list ref] writes: What does a double-asterisk currently do in these patterns?refs/heads/m** seems to behave like refs/heads/m*. I'm a bit surprised by that as for-each-ref seems to set WM_PATHNAME and I thought that our wildmatch code used '**' to match any character in that case.I'd forgotten the rules for '**' - it must come after a slash and be followed by a slash if it is not at the end of a pattern otherwise it is silently converted to '*'. I wish our wildmatch code at least warned when it did that. So one can query all the branches beginning with "m" by passing 'refs/heads/m*' 'refs/heads/m*/**' which isn't as convenient as it could be but it is possible.
As long as the rules are consistent and understandable (once you understand it, that is), then I am perfectly fine. And "** is written as /**/ (but you can omit slashes at either ends)" I find acceptable.
quoted
quoted
- "refs/heads/m*" matches all local branches whose name starts with 'm' like 'morning', but not the ones inside subhierarchies that start with 'm' like 'mid/night'. - "refs/heads/m**" matches all local branches whose name starts with 'm' and in the ones inside subhierarchies that start with 'm'.That sounds like a good ideaNow I'm not so sure.
As long as the existing rule is serviceable (and you seem to have found that it is), we do not need to make such a change. Thanks for thinking it through.