]> git.ipfire.org Git - thirdparty/git.git/commit
replay: support empty commit ranges
authorPatrick Steinhardt <ps@pks.im>
Tue, 13 Jan 2026 09:54:35 +0000 (10:54 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 13 Jan 2026 13:41:16 +0000 (05:41 -0800)
commit5425771568ee286ed7ee848b8886cfdc98806b7a
tree2f22bd2f1930d1b09286f2b5b99ed23a652b1e6e
parent410e3780602a5da36a91d7456daf8b1427d80318
replay: support empty commit ranges

In a subsequent commit we're about to introduce a new user of the replay
subsystem. With that new user, the range of commits that we'll want to
replay will be identified implicitly via a single commit, and will
include all descendants of that commit to any branch. If that commit has
no descendants (because it's the tip of some branch), then the range of
revisions that we're asked to replay becomes empty. This case does not
make sense with git-replay(1), but with the new command it will.

This case is not currently supported by `replay_revisions()` though
because we zero-initialize `struct merge_result`. This includes its
`.clean` member, which indicates whether the merge ran into a conflict
or not. But given that we don't have any revision to replay, we won't
ever perform any merge at all, and consequently that member will never
be set to `1`. We thus later think that there's been a merge conflict
and return an error from `replay_commits()`.

Address this issue by initializing the `.clean` member to `1`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
replay.c