From: "Bence Ferdinandy" <bence@ferdinandy•com>
To: "Christian Hesse" <list@eworm•de>,
"Git Mailing List" <git@vger•kernel.org>
Cc: "Christian Hesse" <mail@eworm•de>
Subject: Re: fatal: Not a valid object name HEAD
Date: Sun, 12 Jan 2025 15:17:36 +0100 [thread overview]
Message-ID: <D705QOX6EFH7.14GKFWVVUQWH7@ferdinandy.com> (raw)
In-Reply-To: <20250111202628.0e5894e4@leda.eworm.net>
On Sat Jan 11, 2025 at 20:26, Christian Hesse <list@eworm•de> wrote:
> 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
next prev parent reply other threads:[~2025-01-12 14:18 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-11 19:26 fatal: Not a valid object name HEAD Christian Hesse
2025-01-12 14:17 ` Bence Ferdinandy [this message]
2025-01-13 16:30 ` Junio C Hamano
2025-01-12 16:51 ` [PATCH] fetch set_head: fix non-mirror remotes in bare repositories Bence Ferdinandy
2025-01-23 21:00 ` Junio C Hamano
2025-01-23 21:42 ` Bence Ferdinandy
2025-01-23 22:00 ` Eric Sunshine
2025-01-24 14:07 ` Christian Hesse
2025-01-24 17:17 ` Junio C Hamano
2025-01-24 5:56 ` Patrick Steinhardt
2025-01-24 10:30 ` Eric Sunshine
2025-01-24 16:07 ` Junio C Hamano
2025-01-26 22:01 ` Bence Ferdinandy
2025-01-26 22:01 ` Bence Ferdinandy
2025-01-26 22:02 ` [PATCH v2 1/2] fetch set_head: refactor to use remote directly Bence Ferdinandy
2025-01-26 22:02 ` [PATCH v2 2/2] fetch set_head: fix non-mirror remotes in bare repositories Bence Ferdinandy
2025-01-27 7:30 ` Patrick Steinhardt
2025-01-27 20:18 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D705QOX6EFH7.14GKFWVVUQWH7@ferdinandy.com \
--to=bence@ferdinandy$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=list@eworm$(echo .)de \
--cc=mail@eworm$(echo .)de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox