git/list[1] front-page[2] threads[3] people[4] search[5] about
wed 2026-10-07 16:56 UTC

Re: [PATCH v2 3/5] replay: die descriptively when invalid commit-ish is given

From
Kristoffer Haugsbakk <code@khaugsbakk.name>
Date
Jan 2, 2026, 11:11 UTC
Message-ID
<c488a180-b840-43df-a593-4dac6b7f00d2@app.fastmail.com>
In-Reply-To
<CABPp-BH1b3rHi96qXLQwQRX6g7POmqYLKyAc=_1UsWmfiWsGFg@mail.gmail.com>
On Tue, Dec 30, 2025, at 23:52, Elijah Newren wrote:
Show 14 quoted lines
>>[snip]
>> @@ -349,13 +351,10 @@ int cmd_replay(int argc,
>>
>>         populate_for_onto_or_advance_mode(repo, &revs.cmdline,
>>                                           onto_name, &advance_name,
>>                                           &onto, &update_refs);
>>
>> -       if (!onto) /* FIXME: Should handle replaying down to root commit */
>> -               die("Replaying down to root commit is not supported yet!");
>> -
>
> Removing the `if` makes sense given the current code, but I wonder if
> we should keep a corrected FIXME here:
>     /* FIXME: Should allow replaying commits with the first as a root commit */

Okay, I will change to keeping this updated comment at this line but remove the if-block. And I will remove the moved comment:

    if (!commit->parents) /* FIXME: Should handle replaying down to root commit */
        die(_("replaying down to root commit is not supported yet!"));

Specifically I will remove the if-block on this patch/commit and make another patch for both renaming the comment and the “replaying down” die-statement.

Show 13 quoted lines
>
> This is out-of-scope for this series, but behind that FIXME...
>
>  I'm guessing the user would specify to cherry-pick onto NULL via something like
>    git replay --root A..B
> which would translate into making `onto` be NULL, and mean that the
> first commit after A would be a root commit.
>
> Similarly the user could be allowed to do something like
>   git replay --advance new-empty-branch A..B
> where new-empty-branch doesn't yet point to a commit, this would also
> result in `onto` being NULL, and start new-empty-branch by
> cherry-picking some commits into it.
Okay. With options from git-rev-list(1) like `--root` this mode makes sense.
Show 18 quoted lines
>
>>         if (prepare_revision_walk(&revs) < 0) {
>>                 ret = error(_("error preparing revisions"));
>>                 goto cleanup;
>>         }
>>
>>
>> @@ -367,11 +366,11 @@ int cmd_replay(int argc,
>>         while ((commit = get_revision(&revs))) {
>>                 const struct name_decoration *decoration;
>>                 khint_t pos;
>>                 int hr;
>>
>> -               if (!commit->parents)
>> +               if (!commit->parents) /* FIXME: Should handle replaying down to root commit */
>>                         die(_("replaying down to root commit is not supported yet!"));
>
> I wonder if I should have written s/to/from/ here ?
“replaying down from”? Not “replaying from”?
>
>
>>[snip]
Previous: Kristoffer HaugsbakkNext: kristofferhaugsbakk@fastmail.com
Message 26 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.