Subject: Re: "lock file exists" when fetching in bare clone of repository

From: Junio C Hamano <[email-masked]>
Date: Thu, 21 Aug 2025 09:05:30 -0700

Patrick Steinhardt <[email-masked]> writes:

>     You're on a case-insensitive filesystem, and the remote you are
>     trying to fetch from has references that only differ in casing. It
>     is impossible to store such references with the "files" backend. You

"backend." -> "backend on your system."

>     can either accept this as-is, in which case you won't be able to
>     store all remote references on disk. Or you can alternatively

I do not see the former as a viable choice, though.  When this
happens, the clone or fetch fails and the user cannot catch up to
the upstream development, no?  You have to futz with the fetch
refspec to cause refs your filesystem cannot store ignored in order
to make progress on other refs, but that is making the user do more
than accepting this as-is.

>     migrate your repository to use the "reftable" backend with the
>     following command:
>
>         git refs migrate --ref-format=reftable
>
>     Please keep in mind that not all implementations of Git support this
>     new format yet. So if you use tools other than Git to access this
>     repository it may not be an option to migrate to reftables.
>
> The last part is what I'm working on right now. libgit2 is fully
> functional now, but what is still lacking is reviews.
>
> Patrick