Skip to content

Display PR conflict details and improve merge-conflict UX#234

Merged
AmethystLiang merged 1 commit into
mainfrom
display-ci-conflict
Mar 31, 2026
Merged

Display PR conflict details and improve merge-conflict UX#234
AmethystLiang merged 1 commit into
mainfrom
display-ci-conflict

Conversation

@AmethystLiang

Copy link
Copy Markdown
Contributor

Problem

When a PR has merge conflicts, users need to understand what the conflicts are and why they exist. The current UI shows GitHub's mergeable state but provides no actionable detail — no file list, no base commit reference, no indication of how far behind the PR branch is. During rebase/merge/cherry-pick operations, the UI doesn't indicate the operation state when there are no conflicts between steps.

Solution

  • Derive conflict metadata locally (base ref, commits behind, conflicting files) using git merge-tree and display it in the Checks panel
  • Fix parseUnmergedEntry to correctly parse porcelain v2 unmerged entries (space-separated, not tab-separated)
  • Enhance rebase detection by checking rebase-merge/ and rebase-apply/ directories, so operation state is shown between conflict resolution steps
  • Disable merge button with tooltip when PR has conflicts
  • Add operation banners (merge/rebase/cherry-pick) in Source Control sidebar and worktree cards
  • Reorder change sections so unresolved conflicts appear at the top
  • Extract conflict summary, issues, and GitHub utilities into separate modules to comply with line-count lint rules
  • Add 10s timeout to git fetch during conflict summary derivation to prevent blocking on slow networks

- Add PRConflictSummary type and derive conflict metadata (base ref,
  commits behind, conflicting files) via local git merge-tree
- Fix parseUnmergedEntry to use space-separated parsing (porcelain v2
  unmerged entries are not tab-separated)
- Enhance rebase detection by checking rebase-merge/ and rebase-apply/
  directories in addition to REBASE_HEAD
- Show conflicting files list and commits-behind count in ChecksPanel
- Disable merge button with tooltip when PR has conflicts
- Add operation banners (merge/rebase/cherry-pick) in SourceControl
  and WorktreeCard
- Reorder section list so unstaged changes appear above staged
- Extract conflict-summary, issues, and gh-utils into separate modules
- Add 10s timeout to git fetch in conflict summary derivation
- Fix test fixtures to match real porcelain v2 format
@AmethystLiang AmethystLiang merged commit f2eb119 into main Mar 31, 2026
1 check passed
@AmethystLiang AmethystLiang deleted the display-ci-conflict branch March 31, 2026 08:27
thomaszdxsn pushed a commit to thomaszdxsn/orca that referenced this pull request Jun 15, 2026
…lyai#234)

- Add PRConflictSummary type and derive conflict metadata (base ref,
  commits behind, conflicting files) via local git merge-tree
- Fix parseUnmergedEntry to use space-separated parsing (porcelain v2
  unmerged entries are not tab-separated)
- Enhance rebase detection by checking rebase-merge/ and rebase-apply/
  directories in addition to REBASE_HEAD
- Show conflicting files list and commits-behind count in ChecksPanel
- Disable merge button with tooltip when PR has conflicts
- Add operation banners (merge/rebase/cherry-pick) in SourceControl
  and WorktreeCard
- Reorder section list so unstaged changes appear above staged
- Extract conflict-summary, issues, and gh-utils into separate modules
- Add 10s timeout to git fetch in conflict summary derivation
- Fix test fixtures to match real porcelain v2 format
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant