[PATCH 0/6] refs: provide detailed error messages when using batched update
- From
Karthik Nayak <karthik.188@gmail.com>
- Date
- Jan 14, 2026, 15:40 UTC
- Message-ID
- <20260114-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v1-0-f5f8b173c501@gmail.com>
The refs namespace uses an error buffer to capture details about failed reference updates. However when we added batched update support to reference transactions, these messages were never propagated, instead only an error code pertaining to the type of failure was propagated.
Currently, there are three regions which utilize batched updates:
- git update-ref --batch-updates - git fetch - git receive-pack
While 'git update-ref --batch-updates' was a newly introduced flag, both 'git fetch' and 'git receive-pack' were pre-existing. Before using batched updates, they provided more detailed error messages to the user, but this changed with the introduction of batched updates. This is a regression in their workings.
This patch series fixes this, by passing the detailed error message and utilizing it whenever available. The regression was reported by Elijah Newren [1] and based on the patch submitted by Jeff King [2].
[1]: https://lore.kernel.org/all/CABPp-BGL2tJR4dPidQuFcp-X0_VkVTknCY-0Zgo=jHVGv_P=wA@mail.gmail.com/ [2]: https://lore.kernel.org/all/20251224081214.GA1879908@coredump.intra.peff.net/
--- builtin/fetch.c | 9 +++++--- builtin/receive-pack.c | 9 ++++++-- builtin/update-ref.c | 13 +++++++----- refs.c | 56 ++++++++++++++++++++++++++++++------------------- refs.h | 1 + refs/files-backend.c | 3 ++- refs/packed-backend.c | 9 +++++--- refs/refs-internal.h | 4 +++- refs/reftable-backend.c | 3 ++- t/t1400-update-ref.sh | 26 +++++++++++------------ t/t5510-fetch.sh | 8 +++---- t/t5516-fetch-push.sh | 15 +++++++++++++ 12 files changed, 102 insertions(+), 54 deletions(-)
Karthik Nayak (6):
refs: remove unused header
refs: attach rejection details to updates
refs: add rejection detail to the callback function
update-ref: utilize rejected error details if available
fetch: utilize rejected ref error details
receive-pack: utilize rejected ref error detailsbase-commit: 8745eae506f700657882b9e32b2aa00f234a6fb6 change-id: 20260113-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-17786b20894a
Thanks - Karthik