Re: [PATCH 6/6] receive-pack: utilize rejected ref error details
- From
Jeff King <peff@peff.net>
- Date
- Jan 14, 2026, 18:03 UTC
- Message-ID
- <20260114180306.GI885771@coredump.intra.peff.net>
- In-Reply-To
- <20260114-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v1-6-f5f8b173c501@gmail.com>
On Wed, Jan 14, 2026 at 04:40:47PM +0100, Karthik Nayak wrote:
Show 21 quoted lines
> 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