Re: [RFC] Refspec patterns with * in the middle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2 Mar 2009, Junio C Hamano wrote:

> Daniel Barkalow <barkalow@xxxxxxxxxxxx> writes:
> 
> > My use case is actually, more precisely:
> >
> > some/constant/stuff/$PROJ-$NUMBER/junk/my-proj
> >
> > Where $NUMBER is the version number, and $PROJ is usually, but not quite 
> > always "my-proj"; the exception being that it might be effectively a 
> > superproject. So I'd like to have:
> >
> >  fetch = some/constant/stuff/my-proj-*/junk/my-proj:refs/remotes/origin/*
> 
> ... and expect "some/constant/stuff/my-proj-2.5/junk/my-proj" to be mapped
> to "refs/remotes/origin/2.5"?  I think it does not look too bad.

Yeah.

> > But I can live with remote branches like "my-proj-2.4" instead of "2.4".
> >
> > I think it would make sense, and limit typo damage, to say that the * can 
> > only expand to something with a '/' in it if the star has a slash or the 
> > end of the string on each side.
> 
> I do not understand what you mean by "* can only expand to something with
> a '/' in it if ..." part.  None of the examples in your message have a
> case where the asterisk matches across directory boundaries, and I thought
> you would simply say "* does not match /" and be done with that.
> 
> What scenario do you have in mind that wants to match a slash with an
> asterisk?

Backwards compatibility? Currently, refs/heads/*:refs/remotes/origin/* 
will match refs/heads/js/notes with refs/remotes/origin/js/notes, because 
it simply copies everything after the fixed prefix.

I was assuming that that particular matching is an existing requirement 
(and that you used it regularly to share topic-maintenance work between 
machines).

So my idea was that a path component of "*" would be able to match 
multiple levels, while a path component of "something-*" or "*-something" 
can only match a single path component that starts or ends with the right 
thing. Looking at it now, I think it might be more sane to use "%" for the 
second case, and say: "*" must be used as a full path component, and 
matches one or more path components; "%" may be used as part of a path 
component, and doesn't match the path separator; you can only use one such 
character, and both sides of the refspec have to agree on which.

I think the problem cases were typos like:

refs/heads*:refs/remotes/origin/* (used to cause problems)

and

refs/heads/*:refs/remotes/origin* (gives you the originmaster remote?)

	-Daniel
*This .sig left intentionally blank*
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux