From: Jeff King Date: Wed, 14 Jan 2026 18:03:06 GMT Subject: Re: [PATCH 6/6] receive-pack: utilize rejected ref error details 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: > 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