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

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

From
Jay Soffian <jaysoffian@gmail.com>
Date
Mar 2, 2009, 12:54 UTC
Message-ID
<76718490903020454j5b787094j1f904a72178a9024@mail.gmail.com>
In-Reply-To
<alpine.LNX.1.00.0903011820590.19665@iabervon.org>
On Sun, Mar 1, 2009 at 6:42 PM, Daniel Barkalow <barkalow@iabervon.org> wrote:
Show 31 quoted lines
> 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.

That seems more confusing that just saying: '*' matches everything but the path separator ('/'), and whatever it matches on the LHS of the ':' is what it expands to on the RHS. I'm not sure how a typo would damage anything, but this could always be enabled with core.refspec.glob_anywhere or some such.

I think regex support is too much:
  fetch = some/constant/stuff/(my-proj-[^/]*)/junk/my-proj:refs/remotes/origin/\1

(Which in a git config, I think may need a double-backslash, but I forget what the config parser does.)

j.
Previous: Daniel BarkalowNext: Junio C Hamano
Message 2 of 12 in “[RFC] Refspec patterns with * in the middle”
  1. Daniel BarkalowMar 1, 2009
  2. Jay SoffianMar 2, 2009
  3. Junio C HamanoMar 2, 2009
  4. Jay SoffianMar 2, 2009
  5. Daniel BarkalowMar 2, 2009
  6. Jay SoffianMar 2, 2009
  7. Junio C HamanoMar 2, 2009
  8. Jay SoffianMar 2, 2009
  9. Daniel BarkalowMar 2, 2009
  10. Junio C HamanoMar 2, 2009
  11. David KastrupMar 3, 2009
  12. Daniel BarkalowMar 2, 2009

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.