Encountered when viewing xcp-ng/edk2#1:
git-review-rebase ba0e0e4c6a174b71b18ccd6e47319cc45878893c..dnt/xcpng8.3 dnt/edk2-stable202602..dnt/xcpng9
Crash 1 was a "list index out of range" in commit_title, which I worked around using this:
diff --git a/scripts/git-review-rebase/src/git_review_rebase/git_utils.py b/scripts/git-review-rebase/src/git_review_rebase/git_utils.py
index c90e22f..e72d24f 100644
--- a/scripts/git-review-rebase/src/git_review_rebase/git_utils.py
+++ b/scripts/git-review-rebase/src/git_review_rebase/git_utils.py
@@ -36,7 +36,7 @@ def range_log(
def commit_title(commit: pygit2.Commit) -> str:
"""Given a Commit object, return the commit title."""
- return commit.message.splitlines()[0]
+ return (commit.message.splitlines() or [""])[0]
def cached_patchid_ref(revision: str) -> str:
Crash 2 happened whenever I tried to view any patch:
╭────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────╮
│ /home/tu/xcp-ng/hypervisor-dev/scripts/git-review-rebase/src/git_review_rebase/app.py:180 in │
│ on_data_table_row_selected │
│ │
│ 177 │ │ │ assert self.rebased_commits_matches is not None │
│ 178 │ │ │ assert isinstance(event.row_key.value, pygit2.Oid) │
│ 179 │ │ │ match = self.rebased_commits_matches.commit_matches[event.row_key.value] │
│ ❱ 180 │ │ │ await self._open_diff(match.left_commit, match.right_commit) │
│ 181 │ │
│ 182 │ async def on_show_diff(self, message: ShowDiff) -> None: │
│ 183 │ │ await self._open_diff(message.left_commit, message.right_commit) │
│ │
│ ╭───────────────────────────────────────────── locals ──────────────────────────────────────────────╮ │
│ │ event = RowSelected(cursor_row=0, row_key=RowKey(value=74a537c166c2b74b51112a1b3856681ca3f39455)) │ │
│ │ match = <git_review_rebase.commit_matching.RebasedCommitMatch object at 0x7d6bb426c6d0> │ │
│ │ self = GitReviewRebase( │ │
│ │ │ title='GitReviewRebase', │ │
│ │ │ classes={'-dark-mode'}, │ │
│ │ │ pseudo_classes={'dark', 'focus'} │ │
│ │ ) │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/tu/xcp-ng/hypervisor-dev/scripts/git-review-rebase/src/git_review_rebase/app.py:168 in │
│ _open_diff │
│ │
│ 165 │ │ self.diff_table.styles.height = "80%" │
│ 166 │ │ async with self.diff_table.reload_lock: │
│ 167 │ │ │ self.diff_table.load_commit_diff(left_commit, right_commit) │
│ ❱ 168 │ │ │ await self.diff_table.show_diff() │
│ 169 │ │ self.diff_table.focus() │
│ 170 │ │ self.active_table = self.diff_table │
│ 171 │ │ self.refresh() │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ left_commit = <pygit2.Object{commit:74a537c166c2b74b51112a1b3856681ca3f39455}> │ │
│ │ right_commit = <pygit2.Object{commit:1cf9fb1b623c0a18a91371d742c2d6448aefb587}> │ │
│ │ self = GitReviewRebase( │ │
│ │ │ title='GitReviewRebase', │ │
│ │ │ classes={'-dark-mode'}, │ │
│ │ │ pseudo_classes={'dark', 'focus'} │ │
│ │ ) │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/tu/xcp-ng/hypervisor-dev/scripts/git-review-rebase/src/git_review_rebase/ui/diff_table.py:370 │
│ in show_diff │
│ │
│ 367 │ │
│ 368 │ async def show_diff(self) -> None: │
│ 369 │ │ async with self.show_diff_lock: │
│ ❱ 370 │ │ │ await self._show_diff() │
│ 371 │ │
│ 372 │ async def _show_diff(self) -> None: │
│ 373 │ │ self.clear(columns=True) │
│ │
│ ╭────── locals ──────╮ │
│ │ self = DiffTable() │ │
│ ╰────────────────────╯ │
│ │
│ /home/tu/xcp-ng/hypervisor-dev/scripts/git-review-rebase/src/git_review_rebase/ui/diff_table.py:389 │
│ in _show_diff │
│ │
│ 386 │ │ ) │
│ 387 │ │ │
│ 388 │ │ for line in self.diff: │
│ ❱ 389 │ │ │ row = await diff_row_maker.get_row_from_line(line) │
│ 390 │ │ │ self.add_row(*row) │
│ 391 │
│ │
│ ╭──────────────────────────────────────────── locals ────────────────────────────────────────────╮ │
│ │ column_length = 47 │ │
│ │ diff_row_maker = <git_review_rebase.ui.diff_table.DiffPrettyRowMaker object at 0x7d6bb1b7bcd0> │ │
│ │ line = ' MnpReceivePacket (' │ │
│ │ row = ( │ │
│ │ │ <text '@@ -828,152 +828,145 @@ EFI_STATUS' [] ''>, │ │
│ │ │ <text ' ' [] ''>, │ │
│ │ │ <text '@@ -828,152 +828,145 @@ EFI_STATUS' [] ''> │ │
│ │ ) │ │
│ │ self = DiffTable() │ │
│ ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/tu/xcp-ng/hypervisor-dev/scripts/git-review-rebase/src/git_review_rebase/ui/diff_table.py:196 │
│ in get_row_from_line │
│ │
│ 193 │ │ │
│ 194 │ │ left_diff_line, middle_char, right_diff_line = ( │
│ 195 │ │ │ line[: self.middle_point].rstrip() or " ", │
│ ❱ 196 │ │ │ line[self.middle_point], │
│ 197 │ │ │ line[self.middle_point + self.right_first_char_index :], │
│ 198 │ │ ) │
│ 199 │
│ │
│ ╭─────────────────────────────────────── locals ───────────────────────────────────────╮ │
│ │ line = ' MnpReceivePacket (' │ │
│ │ self = <git_review_rebase.ui.diff_table.DiffPrettyRowMaker object at 0x7d6bb1b7bcd0> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────╯ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯
IndexError: string index out of range
Encountered when viewing xcp-ng/edk2#1:
Crash 1 was a "list index out of range" in
commit_title, which I worked around using this:Crash 2 happened whenever I tried to view any patch: