]> git.ipfire.org Git - thirdparty/git.git/commit
refs/files: use correct error type when lock exists
authorKarthik Nayak <karthik.188@gmail.com>
Wed, 17 Sep 2025 15:25:12 +0000 (17:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Sep 2025 16:19:08 +0000 (09:19 -0700)
commit9b62a67bdbeb0eb9e6bb15ef40e75bccd9b0169f
tree11f2e9cc366210dd0382811ae8300a035b5cac30
parent3c07063231557201d61ff4d41cee171bda63d1c6
refs/files: use correct error type when lock exists

When fetching references into a repository, if a lock for a particular
reference exists, then `lock_raw_ref()` throws:

    - REF_TRANSACTION_ERROR_CASE_CONFLICT: when there is a conflict
    because the transaction contains conflicting references while being
    on a case-insensitive filesystem.

    - REF_TRANSACTION_ERROR_GENERIC: for all other errors.

The latter causes the entire set of batched updates to fail, even in
case sensitive filessystems.

Instead, return a 'REF_TRANSACTION_ERROR_CREATE_EXISTS' error. This
allows batched updates to reject the individual update which conflicts
with the existing file, while updating the rest of the references.

Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/files-backend.c
t/t5510-fetch.sh