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

Re: [PATCH 1/2] replay: die descriptively when invalid commit-ish

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 23, 2025, 13:41 UTC
Message-ID
<xmqqpl85pb7k.fsf@gitster.g>
In-Reply-To
<a5822145-5a5c-4a2b-84b9-7c061b3bab97@gmail.com>
Phillip Wood <phillip.wood123@gmail.com> writes:
Show 6 quoted lines
> There are only two callers so I think that is a good idea. If you give 
> an invalid commit name to "--advance" then it dies with
>
>      fatal: argument to --advance must be a reference
>
> so arguably we only need to check the return value when parsing "--onto"
So, in determine_replay_mode(), ...
	if (onto_name) {
		*onto = peel_committish(repo, onto_name);
... here is where we must see *onto is NULL and barf and then ...
		if (rinfo.positive_refexprs <
		    strset_get_size(&rinfo.positive_refs))
			die(_("all positive revisions given must be references"));
	} else if (*advance_name) {
		struct object_id oid;
		char *fullname = NULL;
		*onto = peel_committish(repo, *advance_name);
... for symmetry, we would want to do the same.  

In addition, we probably would want to let the following code that uses the same *advance_name (and requires that it just not names a commit-ish object, but is actually a ref, which is a different requirement that is probably a bit tighter) ...

		if (repo_dwim_ref(repo, *advance_name, strlen(*advance_name),
			     &oid, &fullname, 0) == 1) {
			free(*advance_name);
			*advance_name = fullname;
		} else {
			die(_("argument to --advance must be a reference"));
		}

... first, and then compute *onto after that by moving code a bit, perhaps?

Thanks.
Previous: Phillip WoodNext: Elijah Newren
Message 8 of 35 in “replay: die descriptively when invalid commit-ish”
  1. 0/2 replay: die descriptively when invalid commit-ishkristofferhaugsbakk@fastmail.com, Dec 22, 2025
  2. 1/2 replay: die descriptively when invalid commit-ishkristofferhaugsbakk@fastmail.com, Dec 22, 2025
  3. 2/2 t3650: add more regression tests for failure conditionskristofferhaugsbakk@fastmail.com, Dec 22, 2025
  4. Junio C HamanoDec 23, 2025
  5. Junio C HamanoDec 23, 2025
  6. Phillip WoodDec 23, 2025
  7. Phillip WoodDec 23, 2025
  8. Junio C HamanoDec 23, 2025
  9. Elijah NewrenDec 24, 2025
  10. Kristoffer HaugsbakkDec 30, 2025
  11. Kristoffer HaugsbakkDec 30, 2025
  12. Kristoffer HaugsbakkDec 30, 2025
  13. Kristoffer HaugsbakkDec 30, 2025
  14. 0/5 replay: die descriptively when invalid commit-ishkristofferhaugsbakk@fastmail.com, Dec 30, 2025
  15. 1/5 replay: remove dead code and rearrangekristofferhaugsbakk@fastmail.com, Dec 30, 2025
  16. 2/5 replay: find *onto only after testing for ref namekristofferhaugsbakk@fastmail.com, Dec 30, 2025
  17. 3/5 replay: die descriptively when invalid commit-ish is givenkristofferhaugsbakk@fastmail.com, Dec 30, 2025
  18. 4/5 replay: die if we cannot parse objectkristofferhaugsbakk@fastmail.com, Dec 30, 2025
  19. 5/5 t3650: add more regression tests for failure conditionskristofferhaugsbakk@fastmail.com, Dec 30, 2025
  20. Elijah NewrenDec 30, 2025
  21. Elijah NewrenDec 30, 2025
  22. Elijah NewrenDec 30, 2025
  23. Elijah NewrenDec 30, 2025
  24. Junio C HamanoDec 30, 2025
  25. Kristoffer HaugsbakkJan 2, 2026
  26. Kristoffer HaugsbakkJan 2, 2026
  27. 0/6 replay: die descriptively when invalid commit-ishkristofferhaugsbakk@fastmail.com, Jan 5, 2026
  28. 1/6 replay: remove dead code and rearrangekristofferhaugsbakk@fastmail.com, Jan 5, 2026
  29. 2/6 replay: find *onto only after testing for ref namekristofferhaugsbakk@fastmail.com, Jan 5, 2026
  30. 3/6 replay: die descriptively when invalid commit-ish is givenkristofferhaugsbakk@fastmail.com, Jan 5, 2026
  31. 4/6 replay: improve code comment and die messagekristofferhaugsbakk@fastmail.com, Jan 5, 2026
  32. 5/6 replay: die if we cannot parse objectkristofferhaugsbakk@fastmail.com, Jan 5, 2026
  33. 6/6 t3650: add more regression tests for failure conditionskristofferhaugsbakk@fastmail.com, Jan 5, 2026
  34. Elijah NewrenJan 6, 2026
  35. Junio C HamanoJan 7, 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.