From 1989de3bfc0008a54f967ed569fbf38a453e1bca Mon Sep 17 00:00:00 2001 From: Aaron Miller Date: Wed, 2 Sep 2026 19:36:44 -0700 Subject: [PATCH] upload: Don't crash when a relative PR has no remote commits A relative topic's PR can have pr_info but an empty remote_commits list when its head is already contained in its base, typically after merge. Guard that case instead of indexing remote_commits[-1]. Topic: empty-relative-rebase Co-authored-by: Cursor --- revup/topic_stack.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/revup/topic_stack.py b/revup/topic_stack.py index d114860..71a4963 100644 --- a/revup/topic_stack.py +++ b/revup/topic_stack.py @@ -864,11 +864,17 @@ async def mark_rebases(self, skip_rebase: bool) -> None: # For a relative series of reviews, revup will only ever upload them directly # on top of each other. If this relationship is ever broken, we always reupload # This ensures predictable and consistent CI behavior between the branches. - is_on_correct_base = ( - topic.relative_topic.reviews[base_branch].pr_info is None - or review.remote_commits[0].parents[0] - == topic.relative_topic.reviews[base_branch].remote_commits[-1].commit_id - ) + relative_review = topic.relative_topic.reviews[base_branch] + if relative_review.pr_info is None: + is_on_correct_base = True + elif not relative_review.remote_commits: + # We can't verify the relationship so reupload + is_on_correct_base = False + else: + is_on_correct_base = ( + review.remote_commits[0].parents[0] + == relative_review.remote_commits[-1].commit_id + ) relative_topic_is_nochange = ( topic.relative_topic is not None