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

Re: [PATCH 4/6] update-ref: utilize rejected error details if available

From
Jeff King <peff@peff.net>
Date
Jan 14, 2026, 17:55 UTC
Message-ID
<20260114175558.GG885771@coredump.intra.peff.net>
In-Reply-To
<xmqqpl7cf6kf.fsf@gitster.g>
On Wed, Jan 14, 2026 at 09:27:28AM -0800, Junio C Hamano wrote:
Show 29 quoted lines
> Karthik Nayak <karthik.188@gmail.com> writes:
> 
> > @@ -573,16 +573,18 @@ static void print_rejected_refs(const char *refname,
> >  				const char *old_target,
> >  				const char *new_target,
> >  				enum ref_transaction_error err,
> > -				const char *details UNUSED,
> > +				const char *details,
> >  				void *cb_data UNUSED)
> >  {
> >  	struct strbuf sb = STRBUF_INIT;
> > -	const char *reason = ref_transaction_error_msg(err);
> >  
> > -	strbuf_addf(&sb, "rejected %s %s %s %s\n", refname,
> > -		    new_oid ? oid_to_hex(new_oid) : new_target,
> > -		    old_oid ? oid_to_hex(old_oid) : old_target,
> > -		    reason);
> > +	if (details)
> > +		strbuf_addf(&sb, "%s\n", details);
> > +	else
> > +		strbuf_addf(&sb, "rejected %s %s %s %s\n", refname,
> > +			    new_oid ? oid_to_hex(new_oid) : new_target,
> > +			    old_oid ? oid_to_hex(old_oid) : old_target,
> > +			    ref_transaction_error_msg(err));
> 
> Could "details" reported from the lower layer be less detailed than
> what we are formulating here, like updating the value of what ref
> from what old object to what new object, or what the err code tells
> the end-user?

I wondered that, too, but also: is this supposed to be machine-readable? The "rejected ..." output looks like something that could be parsed, and it seems to be documented in git-update-ref(1).

  Side note: if this is meant to be a stable format, surely there should
  be some coverage in the test suite? There doesn't seem to be.

So should we just be replacing the ref_transaction_error_msg() part? I _think_ the low-level details will usually be more informative there, but not necessarily. So possibly we'd even want to show both, though I suspect just concatenating them would be messy.

Plus the "details" one has a lot of redundant information in it (it mentions "refname", even though it is already on the "rejected" line).

In the short-term, I wonder if we just want:
  if (details && *details)
	error("%s", details);

That gets us back to the status quo, where the details are at least available via stderr. And then we can consider how to combine them into the machine-readable format separately.

-Peff
Previous: Junio C HamanoNext: Karthik Nayak
Message 15 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.