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

[PATCH 0/3] object-name: don't allow @ as a branch name

From
Kristoffer Haugsbakk <code@khaugsbakk.name>
Date
Oct 7, 2024, 20:15 UTC
Message-ID
<cover.1728331771.git.code@khaugsbakk.name>

I use `@` a lot for Git commands in the terminal. I accidentally did something that made me create a branch named `@`. This puzzled me since `HEAD` is not allowed.

Note that the bare/one-level `@` ref name is already banned. So this is just about not allowing `refs/heads/@`.

§ Research

This has come up before. There even is a test which guards the current behavior (allow `@` as a branch name) with the comment:[1]

``` # The thing we are testing here is that "@" is the real branch refs/heads/@, # and not refs/heads/HEAD. These tests should not imply that refs/heads/@ is a # sane thing, but it _is_ technically allowed for now. If we disallow it, these # can be switched to test_must_fail. ```

There was no reply to this change in neither the first[2] nor second version.

That series points back to a bug report thread[3] which is about expanding `@` to a branch named `HEAD`.

Peff found a way for the branch name `HEAD` to be created While figuring out a solution:[4]

> Checking "HEAD" afterwards means you can't actually have a branch
> named "HEAD". Doing so is probably insane, but we probably really _do_
> want to just disallow the @-conversion here.

So that was tangential to the bug fix (`HEAD` as a branch name was not disallowed in the patch series that resulted from this bug).

🔗 1: https://lore.kernel.org/git/20170302082306.n6kfc5uqz2kdxtpm@sigill.intra.peff.net/ 🔗 2: https://public-inbox.org/git/20170228121514.qajydm5bjdbzsucg@sigill.intra.peff.net/ 🔗 3: https://public-inbox.org/git/20170228120633.zkwfqms57fk7dkl5@sigill.intra.peff.net/ 🔗 4: https://public-inbox.org/git/20170227090233.uk7dfruggytgmuw2@sigill.intra.peff.net/

  §2 Disallow `HEAD` as a branch name
This was done later in 2017:
https://lore.kernel.org/git/20171114114259.8937-1-kaartic.sivaraam@gmail.com/
  §2 `refs/heads/@` is apparently disallowed by git-refs(1)
See `t/t1508-at-combinations.sh`:

``` error: refs/heads/@: badRefName: invalid refname format ```

Kristoffer Haugsbakk (3):
  object-name: fix whitespace
  object-name: don't allow @ as a branch name
  t1402: exercise disallowed branch names
 object-name.c                         | 5 ++---
 t/t1402-check-ref-format.sh           | 4 ++++
 t/t3204-branch-name-interpretation.sh | 9 ++-------
 3 files changed, 8 insertions(+), 10 deletions(-)
-- 
2.46.1.641.g54e7913fcb6
Next: Kristoffer Haugsbakk
Message 1 of 18 in “object-name: don't allow @ as a branch name”
  1. 0/3 object-name: don't allow @ as a branch nameKristoffer Haugsbakk, Oct 7, 2024
  2. 1/3 object-name: fix whitespaceKristoffer Haugsbakk, Oct 7, 2024
  3. 2/3 object-name: don't allow @ as a branch nameKristoffer Haugsbakk, Oct 7, 2024
  4. Jeff KingOct 7, 2024
  5. Kristoffer HaugsbakkOct 7, 2024
  6. Jeff KingOct 8, 2024
  7. Rubén JustoOct 8, 2024
  8. Junio C HamanoOct 7, 2024
  9. Jeff KingOct 8, 2024
  10. 3/3 t1402: exercise disallowed branch namesKristoffer Haugsbakk, Oct 7, 2024
  11. Jeff KingOct 7, 2024
  12. Jeff KingOct 7, 2024
  13. Kristoffer HaugsbakkOct 7, 2024
  14. shejialuoOct 8, 2024
  15. Kristoffer HaugsbakkOct 8, 2024
  16. shejialuoOct 18, 2024
  17. Junio C HamanoOct 8, 2024
  18. shejialuoOct 9, 2024

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.