Re: Git fetch Failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Kristoffer Haugsbakk" <kristofferhaugsbakk@xxxxxxxxxxxx> writes:

> On Tue, Sep 2, 2025, at 16:08, Tarun【ツ】 wrote:
>>[snip]
>> What happened instead? (Actual behavior)
>>
>> Git fetch failed with error
>>
>> error: cannot lock ref
>> 'refs/remotes/origin/users/ajya/sqlservermoduleimportM146': Unable to
>> create
>> '/Users/admin/Repos/tasks1/.git/refs/remotes/origin/users/ajya/sqlservermoduleimportM146.lock':
>> File exists.
>>[snip]
>> [System Info]
>>
>> git version:
>>
>> git version 2.51.0
>>
>> cpu: arm64
>>
>> no commit associated with this build
>>
>> sizeof-long: 8
>>
>> sizeof-size_t: 8
>>
>> shell-path: /bin/sh
>>
>> feature: fsmonitor--daemon
>>
>> libcurl: 8.7.1
>>
>> zlib: 1.2.12
>>
>> SHA-1: SHA1_DC
>>
>> SHA-256: SHA256_BLK
>>
>> default-ref-format: files
>>
>> default-hash: sha1
>>
>> uname: Darwin 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:29
>> PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6000 arm64
>>
>> compiler info: clang: 17.0.0 (clang-1700.0.13.3)
>>
>> libc info: no libc information available
>>
>> $SHELL (typically, interactive shell): /bin/zsh
>>
>>
>>
>> [Enabled iHooks]
>
> It looks like a casing issue caused by `default-ref-format: files`.
>
> ```
> $ git for-each-ref --format='%(refname)' | grep -i sqlServerModuleImportM146
> refs/remotes/origin/users/ajya/sqlServerModuleImportM146
> refs/remotes/origin/users/ajya/sqlservermoduleimportM146
> ```
>
> You could try
>
> ```
> $ git clone --ref-format=reftable https://github.com/microsoft/azure-pipelines-tasks.git
> ```
>

Yeah, so the issue is that using the files backend on case-insensitive
filesystems breaks since there are conflicts due to references with only
case difference. Before 2.51 we would simply overwrite one reference
with the other _silently_. With 2.51 we use a single transaction for
reference update and this breaks.

There was another report similar to this [1] and I've also pushed
patches to overcome this issue [2]. But with the files backend, there
will always be a compromise.

So like Kristoffer suggested, the best path is to use the reftable
backend, which can handle different cases in references.

[1]: https://lore.kernel.org/all/YQXPR01MB3046197EF39296549EE6DD669A33A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
[2]: https://lore.kernel.org/all/20250902-587-git-fetch-1-fails-fetches-on-case-insensitive-repositories-v1-0-35e69bbb507d@xxxxxxxxx/

> --
> Kristoffer Haugsbakk

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux