[RFC] Refspec patterns with * in the middle
- From
Daniel Barkalow <barkalow@iabervon.org>
- Date
- Mar 1, 2009, 23:42 UTC
- Message-ID
- <alpine.LNX.1.00.0903011820590.19665@iabervon.org>
I've got an annoying repository where all of the branches upstream[*] have names, for a project "my-proj" like:
some/constant/stuff/$VERSION/junk/my-proj
I'd like to be able to use refspecs like:
fetch = some/constant/stuff/*/junk/my-proj:refs/remotes/origin/*
I've written an implementation (which mainly involved having only one place do the matching and replacement for pattern refspecs, and then making that one place a little more clever), so that's not hard. But we currently prohibit refspecs like this, and I think we may want to prohibit some patterns of this general form, in order to keep typos from doing surprising things.
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/*
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.
What are other people's thoughts? Should I have a config option for how flexible matching is permitted? Any particular constraints I should have in general?
[*] (This is actually a Perforce upstream, but I want to keep the mapping from Perforce into git simple and not grow another pattern-matching format, so I'm just copying Perforce paths as ref names, and then I want the match them with the usual code)
-Daniel *This .sig left intentionally blank*