* git clone fails when using --dissociate together with a reference repository that contains a commit-graph
@ 2026-05-12 7:35 Daniel Mach
2026-05-12 18:38 ` Jeff King
0 siblings, 1 reply; 2+ messages in thread
From: Daniel Mach @ 2026-05-12 7:35 UTC (permalink / raw)
To: git
[-- Attachment #1.1: Type: text/plain, Size: 1403 bytes --]
Hi,
I've stumbled upon a bug that the following command failed:
$ git clone <url> <dir> --reference <old-dir> --dissociate
fatal: unable to parse commit <SHA>
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
Omitting --dissociate fixed the error, but it wasn't clear to me what
might be the root cause.
$ git --version
git version 2.54.0
With the help of AI I was able to create a reproducer (see the attached
script).
I have verified that the reproducer works and also simplified it.
AI generated report (take it with a grain of salt):
* The Bug: During dissociation, Git correctly repacks objects and
removes the objects/info/alternates file. However, the git clone process
has already initialized its object store including the alternate's
commit-graph.
After dissociation, it fails to "forget" or reload the object store,
leading to a crash when it tries to use the commit-graph (which refers
to the now-unlinked alternate) to perform the initial checkout.
* Proof of state: As shown in the script output, a manual git checkout
immediately after the failure succeeds, proving the repository is
structurally sound but the clone process itself was in an inconsistent
state.
* Workaround: Passing -c core.commitGraph=false to the clone command
prevents the crash.
regards,
Daniel
[-- Attachment #1.2: Type: text/html, Size: 3034 bytes --]
[-- Attachment #2: reproducer_git_clone_dissociate.sh --]
[-- Type: application/x-shellscript, Size: 1335 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: git clone fails when using --dissociate together with a reference repository that contains a commit-graph
2026-05-12 7:35 git clone fails when using --dissociate together with a reference repository that contains a commit-graph Daniel Mach
@ 2026-05-12 18:38 ` Jeff King
0 siblings, 0 replies; 2+ messages in thread
From: Jeff King @ 2026-05-12 18:38 UTC (permalink / raw)
To: Daniel Mach; +Cc: git
On Tue, May 12, 2026 at 09:35:49AM +0200, Daniel Mach wrote:
> I've stumbled upon a bug that the following command failed:
>
> $ git clone <url> <dir> --reference <old-dir> --dissociate
> fatal: unable to parse commit <SHA>
> warning: Clone succeeded, but checkout failed.
> You can inspect what was checked out with 'git status'
> and retry with 'git restore --source=HEAD :/'
>
> Omitting --dissociate fixed the error, but it wasn't clear to me what might
> be the root cause.
I think this is the same bug discussed here:
https://lore.kernel.org/git/20260504095110.GA599780@coredump.intra.peff.net/
I haven't worked up a more polished patch yet because I was trying to
decide between the approach given there (to lazily fall back to manual
parsing) versus filling in all of the dependent tree fields when closing
the commit-graph. Which one is cheaper depends on the access patterns
(how many commits will actually be looked at post-close, versus how many
were ever loaded).
-Peff
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-12 18:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-12 7:35 git clone fails when using --dissociate together with a reference repository that contains a commit-graph Daniel Mach
2026-05-12 18:38 ` Jeff King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox