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

Re: fatal: Not a valid object name HEAD

From
Bence Ferdinandy <bence@ferdinandy.com>
Date
Jan 12, 2025, 14:17 UTC
Message-ID
<D705QOX6EFH7.14GKFWVVUQWH7@ferdinandy.com>
In-Reply-To
<20250111202628.0e5894e4@leda.eworm.net>
On Sat Jan 11, 2025 at 20:26, Christian Hesse <list@eworm.de> wrote:
Show 35 quoted lines
> Hello everybody,
>
> starting with Git 2.48.0 I see some trouble with some mirrored bare
> repositories. Try this:
>
> box ~ % git clone --mirror https://github.com/codership/galera.git
> Cloning into bare repository 'galera.git'...
> remote: Enumerating objects: 49768, done.
> remote: Counting objects: 100% (2251/2251), done.
> remote: Compressing objects: 100% (553/553), done.
> remote: Total 49768 (delta 1986), reused 1716 (delta 1698), pack-reused 47517 (from 3)
> Receiving objects: 100% (49768/49768), 25.20 MiB | 4.92 MiB/s, done.
> Resolving deltas: 100% (37386/37386), done.
> box ~ % cd galera.git 
> box ~/galera.git (git)-[4.x] % git describe 
> release_26.4.5-345-gd811a577
> box ~/galera.git (git)-[4.x] % git remote add mariadb https://github.com/MariaDB/galera.git
> box ~/galera.git (git)-[4.x] % git fetch --all
> Fetching origin
> Fetching mariadb
> remote: Enumerating objects: 638, done.
> remote: Counting objects: 100% (517/517), done.
> remote: Compressing objects: 100% (125/125), done.
> remote: Total 638 (delta 415), reused 454 (delta 392), pack-reused 121 (from 3)
> Receiving objects: 100% (638/638), 386.30 KiB | 5.08 MiB/s, done.
> Resolving deltas: 100% (440/440), completed with 105 local objects.
> From https://github.com/MariaDB/galera
>  * [new branch]        0.6 -> mariadb/0.6
> [ snipped some more branches and tags ]
> box ~/galera.git (git)-[mariadb-4.x] % git describe                                                
> fatal: Not a valid object name HEAD
>
> Guess that's not expected... Why does that happen?
>
> Possibly fallout caused by https://github.com/git/git/commit/5f212684abb66c9604e745a2296af8c4bb99961c
More specifically: https://github.com/git/git/commit/b1b713f722894d7f66e9ec64bc934ca32004d3d1
So what happened before the series is that HEAD was set on cloning to 
	ref: refs/heads/4.x 

and the adding the new remote did not change this. After the series fetching the new remote will overwrite HEAD to

	ref: refs/heads/mariadb-4.x 

which does not exist in the repository. Note that the older version does not set up `refs/remotes/mariadb/HEAD` which is interesting?

I think the correct way to handle this would be to check if the remote has `mirror=true` set, and if we're running in a bare repository we should overwrite HEAD and if it's not a mirror we should instead set up `refs/remotes/nonmirrorremote/HEAD`. (I think a remote can be a mirror without the repository being bare, I'm not sure.)

I can probably send a patch late next week to fix this.

Best, Bence

Previous: Christian HesseNext: Junio C Hamano
Message 2 of 18 in “fatal: Not a valid object name HEAD”
  1. Christian HesseJan 11, 2025
  2. Bence FerdinandyJan 12, 2025
  3. Junio C HamanoJan 13, 2025
  4. fetch set_head: fix non-mirror remotes in bare repositoriesBence Ferdinandy, Jan 12, 2025
  5. Junio C HamanoJan 23, 2025
  6. Bence FerdinandyJan 23, 2025
  7. Eric SunshineJan 23, 2025
  8. Christian HesseJan 24, 2025
  9. Junio C HamanoJan 24, 2025
  10. Patrick SteinhardtJan 24, 2025
  11. Eric SunshineJan 24, 2025
  12. Junio C HamanoJan 24, 2025
  13. Bence FerdinandyJan 26, 2025
  14. Bence FerdinandyJan 26, 2025
  15. 1/2 fetch set_head: refactor to use remote directlyBence Ferdinandy, Jan 26, 2025
  16. 2/2 fetch set_head: fix non-mirror remotes in bare repositoriesBence Ferdinandy, Jan 26, 2025
  17. Patrick SteinhardtJan 27, 2025
  18. Junio C HamanoJan 27, 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.