Subject: Re: [PATCH 0/6] refs: provide detailed error messages when using batched update

From: Junio C Hamano <[email-masked]>
Date: Wed, 14 Jan 2026 08:45:31 -0800

Karthik Nayak <[email-masked]> writes:

> 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=[email-masked]/
> [2]: https://lore.kernel.org/all/[email-masked]/

Thanks, all.  It is very nice to see such a collaboration going ;-)

Will queue.

> ---
>  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 details
>
>
>
> base-commit: 8745eae506f700657882b9e32b2aa00f234a6fb6
> change-id: 20260113-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-17786b20894a
>
> Thanks
> - Karthik