Re: [RFC] Refspec patterns with * in the middle
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 2, 2009, 22:39 UTC
- Message-ID
- <7v1vtfmtwj.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <76718490903021407u215fb769g656a8fdc20e622e5@mail.gmail.com>
Jay Soffian <jaysoffian@gmail.com> writes:
Show 18 quoted lines
> On Mon, Mar 2, 2009 at 1:25 PM, Daniel Barkalow <barkalow@iabervon.org> wrote: >>> But the following is not: >>> >>> - foo/bar*/baz >>> >>> IOW, '*' can only appear as a non-terminating symbol if it is bounded >>> by '/' on each side. >> >> You have my criterion right, but I want that to be valid, but only match >> things like "foo/bar-something/baz", not "foo/bar-a/b/baz". > > Ah, that makes sense. Perhaps use "**" to mean matching across path > components which is what rsync does: > > o a '*' matches any non-empty path component (it stops at slashes). > o use '**' to match anything, including slashes. > > ?
I personally do not think that makes much sense (and I find ** ugly, too).
We traditionally supported '*' only at the end, and it always has meant "match through the end, including slashes".
Requiring 'match including slashes' to be spelled as '**' only when it is not at the end is unnecessarily confusing.
Is there a valid use case when * wants to match across directory boundaries when it is not at the end? I offhand do not think of a sane one.
So, it might make it easiest to understand if we say * usually does not match slash, except when it is used at the end immediately after a slash, in which case it means "match through the end".