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

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

From
Kkristofferhaugsbakk@fastmail.com <kristofferhaugsbakk@fastmail.com>
Date
Dec 22, 2025, 22:04 UTC
Message-ID
<CV_replay_die_descr.13f@msgid.xyz>
From: Kristoffer Haugsbakk <code@khaugsbakk.name>

You get this error when you for example mistype the argument to `--onto`:

    fatal: Replaying down to root commit is not supported yet!

Consider that you might not know yourself that you have mistyped something; then this looks even more puzzling. You might have given a range like `main..topic` but the command says that it would need to replay down to the root commit.

The only thing that’s happened though is that `NULL` has been interpreted in the wrong way.

Let’s instead die immediately when the real error happens, in other words when we can’t find the commit for the given commit-ish.

Also add more regression tests.

Somewhat unrelated to this change—and caveat not a C programmer—I was confused by `determine_replay_mode`. Most of the function deals with three cases:

    if (onto_name) {
    ...
    } else if (*advance_name) {
    ...
    } else {
    ...
    }

But I don’t get the `else` since you now need to provide either `--onto` or `--advance`. And both require an argument. So when can the fallthrough `else` happen?

I thought that maybe the `else` was old code that predated `--onto` and `--advance` being mandatory. But that whole method and this check was added in the same commit, in 22d99f01 (replay: add --advance or 'cherry-pick' mode, 2023-11-24):

    if (!onto_name && !advance_name) {
            error(_("option --onto or --advance is mandatory"));
But just ignore this section if I’m simply confused.
Kristoffer Haugsbakk (2):
  replay: die descriptively when invalid commit-ish
  t3650: add more regression tests for failure conditions
 builtin/replay.c         |  2 +-
 t/t3650-replay-basics.sh | 43 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)
base-commit: 9a2fb147f2c61d0cab52c883e7e26f5b7948e3ed
-- 
2.52.0.10.g08704017180
Next: kristofferhaugsbakk@fastmail.com
Message 1 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. Junio C HamanoDec 23, 2025
  4. Phillip WoodDec 23, 2025
  5. Junio C HamanoDec 23, 2025
  6. Kristoffer HaugsbakkDec 30, 2025
  7. 2/2 t3650: add more regression tests for failure conditionskristofferhaugsbakk@fastmail.com, Dec 22, 2025
  8. Phillip WoodDec 23, 2025
  9. Kristoffer HaugsbakkDec 30, 2025
  10. Junio C HamanoDec 23, 2025
  11. Kristoffer HaugsbakkDec 30, 2025
  12. Elijah NewrenDec 24, 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. Elijah NewrenDec 30, 2025
  17. Junio C HamanoDec 30, 2025
  18. Kristoffer HaugsbakkJan 2, 2026
  19. 2/5 replay: find *onto only after testing for ref namekristofferhaugsbakk@fastmail.com, Dec 30, 2025
  20. Elijah NewrenDec 30, 2025
  21. 3/5 replay: die descriptively when invalid commit-ish is givenkristofferhaugsbakk@fastmail.com, Dec 30, 2025
  22. Elijah NewrenDec 30, 2025
  23. Kristoffer HaugsbakkJan 2, 2026
  24. 4/5 replay: die if we cannot parse objectkristofferhaugsbakk@fastmail.com, Dec 30, 2025
  25. 5/5 t3650: add more regression tests for failure conditionskristofferhaugsbakk@fastmail.com, Dec 30, 2025
  26. Elijah NewrenDec 30, 2025
  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.