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

Re: [PATCH v3 2/2] remote.c: remove BUG in show_push_unqualified_ref_name_error()

From
Patrick Steinhardt <ps@pks.im>
Date
Aug 6, 2025, 06:14 UTC
Message-ID
<aJLywm9xWQQUADH1@pks.im>
In-Reply-To
<938dfb8d4e37ef962c811d6e0f32122a2522deb5.1754455931.git.liu.denton@gmail.com>
On Tue, Aug 05, 2025 at 09:53:42PM -0700, Denton Liu wrote:
Show 14 quoted lines
> diff --git a/remote.c b/remote.c
> index e965f022f1..465e0ea0eb 100644
> --- a/remote.c
> +++ b/remote.c
> @@ -1218,8 +1218,8 @@ static void show_push_unqualified_ref_name_error(const char *dst_value,
>  			 "'%s:refs/tags/%s'?"),
>  		       matched_src_name, dst_value);
>  	} else {
> -		BUG("'%s' should be commit/tag/tree/blob, is '%d'",
> -		    matched_src_name, type);
> +		advise(_("The <src> part of the refspec ('%s') is an object ID that doesn't exist.\n"),
> +		       matched_src_name);
>  	}
>  }

This reads a lot better, thanks. We could arguably convert the if-else-chain into a switch to make all of this read a bit better, but that is a subjective style change and definitely not something that you have to do as part of this series.

Regarding the logic this looks sensible to me. We have already handled all valid object types in the cases leading up to this final `else`, so we can be sure that we weren't able to look up the object. And warning about that case feels reasonable.

One thing I wondered is whether it's okay to not die anymore via `BUG()`. The other error cases already don't die though, so this ought to be fine. Going up the callchain shows that we do bubble up the error as expected until we end up in `match_push_refs()`. There's multiple callers of that function, and all except one perform error handling for it.

The only exception is git-remote(1) in `get_push_ref_states()`, where it gets executed via `git remote show $remote_name`. As far as I understand we would end up not showing any references that are broken, and we would print the above advise. Which I think is reasonable.

So all of this looks good to me, thanks!
Patrick
Previous: Denton LiuNext: Junio C Hamano
Message 15 of 34 in “remote.c: remove erroneous BUG case”
  1. 0/2 remote.c: remove erroneous BUG caseDenton Liu, Aug 4, 2025
  2. 1/2 t5516: introduce 'push ref expression with non-existent oid src'Denton Liu, Aug 4, 2025
  3. 2/2 remote.c: remove BUG in show_push_unqualified_ref_name_error()Denton Liu, Aug 4, 2025
  4. Junio C HamanoAug 4, 2025
  5. 0/2 *** SUBJECT HERE ***Denton Liu, Aug 5, 2025
  6. 1/2 t5516: introduce 'push ref expression with non-existent oid src'Denton Liu, Aug 5, 2025
  7. Patrick SteinhardtAug 5, 2025
  8. Junio C HamanoAug 5, 2025
  9. 2/2 remote.c: remove BUG in show_push_unqualified_ref_name_error()Denton Liu, Aug 5, 2025
  10. Patrick SteinhardtAug 5, 2025
  11. 0/2 remote.c: remove erroneous BUG caseDenton Liu, Aug 6, 2025
  12. 1/2 t5516: remove surrounding empty lines in test bodiesDenton Liu, Aug 6, 2025
  13. Patrick SteinhardtAug 6, 2025
  14. 2/2 remote.c: remove BUG in show_push_unqualified_ref_name_error()Denton Liu, Aug 6, 2025
  15. Patrick SteinhardtAug 6, 2025
  16. Junio C HamanoAug 6, 2025
  17. remote.c: convert if-else tower to switchDenton Liu, Aug 7, 2025
  18. Patrick SteinhardtAug 7, 2025
  19. remote.c: convert if-else tower to switchDenton Liu, Aug 7, 2025
  20. Ben KnobleAug 7, 2025
  21. Eric SunshineAug 7, 2025
  22. Junio C HamanoAug 7, 2025
  23. 0/3 remote.c: remove erroneous BUG caseDenton Liu, Aug 8, 2025
  24. 1/3 t5516: remove surrounding empty lines in test bodiesDenton Liu, Aug 8, 2025
  25. 2/3 remote.c: convert if-else ladder to switchDenton Liu, Aug 8, 2025
  26. Patrick SteinhardtAug 8, 2025
  27. Denton LiuAug 8, 2025
  28. 3/3 remote.c: remove BUG in show_push_unqualified_ref_name_error()Denton Liu, Aug 8, 2025
  29. 0/3 remote.c: remove erroneous BUG caseDenton Liu, Aug 8, 2025
  30. 1/3 t5516: remove surrounding empty lines in test bodiesDenton Liu, Aug 8, 2025
  31. 2/3 remote.c: remove BUG in show_push_unqualified_ref_name_error()Denton Liu, Aug 8, 2025
  32. 3/3 remote.c: convert if-else ladder to switchDenton Liu, Aug 8, 2025
  33. Patrick SteinhardtAug 8, 2025
  34. Junio C HamanoAug 8, 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.