git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 6/6] receive-pack: utilize rejected ref error details

From
Karthik Nayak <karthik.188@gmail.com>
Date
Jan 15, 2026, 15:21 UTC
Message-ID
<CAOLa=ZSCAJ-XPWK6vg3p7TO=3T3y8CD+VY4jqn41X2wbdmoaMg@mail.gmail.com>
In-Reply-To
<20260114180306.GI885771@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 36 quoted lines
> On Wed, Jan 14, 2026 at 04:40:47PM +0100, Karthik Nayak wrote:
>
>> In 9d2962a7c4 (receive-pack: use batched reference updates, 2025-05-19),
>> git-receive-pack(1) switched to using batched reference updates. This also
>> introduced a regression wherein instead of providing detailed error
>> messages for failed referenced updates, the users were provided generic
>> error messages based on the error type.
>>
>> Similar to the previous commit, switch to using detailed error messages
>> if present for failed reference updates to fix this regression.
>>
>> One downside of this is that the messages can be very verbose, for e.g.
>> in the files backend, when trying to write a non-commit object to a
>> branch, you would see:
>>
>>    ! [remote rejected] 3eaec9ccf3a53f168362a6b3fdeb73426fb9813d ->
>>    branch (cannot update ref 'refs/heads/branch': trying to write
>>    non-commit object 3eaec9ccf3a53f168362a6b3fdeb73426fb9813d to branch
>>    'refs/heads/branch')
>>
>> Here the refname is repeated multiple times due to how error messages
>> are propagated and filled over the code stack. This potentially can be
>> cleaned up in a future commit.
>
> If we are going to have a "potentially cleaned up in the future" state,
> I think I would prefer to see just:
>
>   if (details)
> 	rp_error("%s", details);
>
> here. And then it comes over the stderr sideband, but the actual
> status-table gets the same non-verbose message. That's what happened
> in v2.50.0 and earlier. Later if we want to try to cram more details
> into the machine-readable message we can.
>
> -Peff

Fair enough, I think that would be a better approach for now, will change.

Previous: Jeff KingNext: Junio C Hamano
Message 24 of 32 in “refs: provide detailed error messages when using batched update”
  1. 0/6 refs: provide detailed error messages when using batched updateKarthik Nayak, Jan 14, 2026
  2. 1/6 refs: remove unused headerKarthik Nayak, Jan 14, 2026
  3. Junio C HamanoJan 14, 2026
  4. Karthik NayakJan 15, 2026
  5. 2/6 refs: attach rejection details to updatesKarthik Nayak, Jan 14, 2026
  6. Jeff KingJan 14, 2026
  7. Karthik NayakJan 15, 2026
  8. Jeff KingJan 15, 2026
  9. Karthik NayakJan 16, 2026
  10. 3/6 refs: add rejection detail to the callback functionKarthik Nayak, Jan 14, 2026
  11. Jeff KingJan 14, 2026
  12. Karthik NayakJan 15, 2026
  13. 4/6 update-ref: utilize rejected error details if availableKarthik Nayak, Jan 14, 2026
  14. Junio C HamanoJan 14, 2026
  15. Jeff KingJan 14, 2026
  16. Karthik NayakJan 15, 2026
  17. 5/6 fetch: utilize rejected ref error detailsKarthik Nayak, Jan 14, 2026
  18. Junio C HamanoJan 14, 2026
  19. Karthik NayakJan 15, 2026
  20. Jeff KingJan 14, 2026
  21. Karthik NayakJan 15, 2026
  22. 6/6 receive-pack: utilize rejected ref error detailsKarthik Nayak, Jan 14, 2026
  23. Jeff KingJan 14, 2026
  24. Karthik NayakJan 15, 2026
  25. Junio C HamanoJan 14, 2026
  26. 0/6 refs: provide detailed error messages when using batched updateKarthik Nayak, Jan 25, 2026
  27. 1/6 refs: skip to next ref when current ref is rejectedKarthik Nayak, Jan 25, 2026
  28. 2/6 refs: add rejection detail to the callback functionKarthik Nayak, Jan 25, 2026
  29. 3/6 update-ref: utilize rejected error details if availableKarthik Nayak, Jan 25, 2026
  30. 4/6 fetch: utilize rejected ref error detailsKarthik Nayak, Jan 25, 2026
  31. 5/6 receive-pack: utilize rejected ref error detailsKarthik Nayak, Jan 25, 2026
  32. 6/6 fetch: delay user information post committing of transactionKarthik Nayak, Jan 25, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.