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

Re: What’s the intended/reasonable usage patterns for symrefs?

From
KHKristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Date
Oct 16, 2024, 17:23 UTC
Message-ID
<7347e29a-f33e-472b-b993-06c4767a9456@app.fastmail.com>
In-Reply-To
<Zwzvgby2_oCjQpii@pks.im>
On Mon, Oct 14, 2024, at 12:16, Patrick Steinhardt wrote:
Show 13 quoted lines
> On Sun, Oct 13, 2024 at 09:57:23PM +0200, Kristoffer Haugsbakk wrote:
>> […]
>> This seems overly restrictive for this day and age though? No?
>
> There at least is no technical reason to restrict this from the ref
> backend's point of view. Neither the "files" nor the "reftable" backend
> enforce any restrictions except the restrictions we have in place for
> any other reference: a ref is either a root ref, a pseudoref or it must
> start with "refs/".
>
> Now the only reason why I'd say that you maybe shouldn't create weird
> symrefs is that tooling isn't prepared to handle them. But that is not
> sufficient reason for me to say that you mustn't create them.
Thanks.  This makes sense. :)
❦
I discovered/re-discovered a pitfall with the following approach:
> Create a `refs/heads/<symref>` which points to a remote-tracking
> branch

Again, so tempting to do for me because you get a shorthand via `refs/heads`. And this is indeed fine for read-only operations (effectively).

But don’t be careless and do something like commit while checked out here. Because you are checked out on an ostensibly “proper branch” (not detached HEAD) and the remote-tracking branch will move forward with a commit.

So I’ve gone back to using one-level (root-level) symrefs with all-capital names. Because git-symbolic-ref(1) allows that and I haven’t gotten any weird warnings from it. (I would presumably get warnings if I then defined a ref named e.g. `refs/heads/M` if `M` was my top-level symref.)

Previous: Patrick SteinhardtNext: Kristoffer Haugsbakk
Message 3 of 5 in “What’s the intended/reasonable usage patterns for symrefs?”
  1. Kristoffer HaugsbakkOct 13, 2024
  2. Patrick SteinhardtOct 14, 2024
  3. Kristoffer HaugsbakkOct 16, 2024
  4. Kristoffer HaugsbakkNov 4, 2024
  5. Kristoffer HaugsbakkJun 20, 2025

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.