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

Possible regression: lost diagnostic message when pushing non-commit objects to refs/heads/*

From
Elijah Newren <newren@gmail.com>
Date
Dec 24, 2025, 03:32 UTC
Message-ID
<CABPp-BGL2tJR4dPidQuFcp-X0_VkVTknCY-0Zgo=jHVGv_P=wA@mail.gmail.com>
Hi,

git used to have better diagnostics about pushing non-commit objects to refs/heads/*, dating all the way back to c3b0dec509fe (Be more careful about updating refs, 2008-01-15):

$ git --version && git push . tagit:old
git version 2.50.1
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: error: cannot update ref 'refs/heads/old': trying to write
non-commit object d19968fcf0d3193147b827c9e89668d619afd01e to branch
'refs/heads/old'
To .
 ! [remote rejected] tagit -> old (failed to update ref)
error: failed to push some refs to '.'
Unfortunately, the "trying to write non-commit object" error is no longer shown:
$ git --version && git push . tagit:old
git version 2.51.0
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To .
 ! [remote rejected] tagit -> old (invalid new value provided)
error: failed to push some refs to '.'

The relevant error message is still part of the code: $ git grep "write non-commit object" -- '*.c' refs/files-backend.c: "trying to write non-commit object %s to branch '%s'", refs/reftable-backend.c: strbuf_addf(err, _("trying to write non-commit object %s to branch '%s'"),

but the error message isn't displayed. Bisecting shows that this started with commit 9d2962a7c44 ("receive-pack: use batched reference updates", 2025-05-19). That commit message to me suggests that while error handling was necessarily changed, that dropping the errors was not intentional:

``` As using batched updates requires the error handling to be moved to the end of the flow, create and use a 'struct strset' to track the failed refs and attribute the correct errors to them. ```

But it's possible I'm reading it wrong. Was it intentional, or is this a regression?

Next: Junio C Hamano
Message 1 of 6 in “Possible regression: lost diagnostic message when pushing non-commit objects to refs/heads/*”
  1. Elijah NewrenDec 24, 2025
  2. Junio C HamanoDec 24, 2025
  3. Jeff KingDec 24, 2025
  4. Jeff KingDec 24, 2025
  5. Karthik NayakDec 26, 2025
  6. Jeff KingDec 27, 2025

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.