Closes #5488 - Unifies how paused/conflicted operations are surfaced#5490
Conversation
🤖 Augment PR SummarySummary: This PR unifies how GitLens surfaces paused/conflicted Git operations (merge, rebase, cherry-pick, revert) to avoid duplicate UI reactions and inconsistent “Show Conflicts” behavior. Changes:
Technical Notes: Graph surfacing uses 🤖 Was this summary useful? React with 👍 or 👎 |
There was a problem hiding this comment.
Pull request overview
This PR centralizes and standardizes how GitLens surfaces paused/conflicted Git operations (rebase, merge, cherry-pick, revert) to eliminate competing UI reactions and make “Show Conflicts” behavior consistent across hosts and entry points.
Changes:
- Introduces a unified
showPausedOperationStatusrule that primarily routes users to the Commit Graph WIP details (or to the Interactive Rebase Editor only for gated rebases outside the rebase editor). - Refactors rebase auto-open behavior to distinguish conflict pauses (route via the unified helper) from interactive pauses (keep existing rebase-editor opening behavior).
- Removes Commits view as a paused-operation surface (including dead-code removal of
CommitsView.revealPausedOperationStatus) and updates callers to the new helper/signatures.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/git/actions/pausedOperation.ts | Implements the unified paused-op surfacing rule and updates continue/skip flows to route to it |
| src/webviews/rebase/rebaseEditor.ts | Splits rebase pause handling: conflicts route through the unified helper; interactive pauses keep existing behavior |
| src/webviews/rebase/rebaseWebviewProvider.ts | Updates paused-op actions to new signatures and ensures in-editor “Show Conflicts” routes to Graph |
| src/webviews/plus/graph/graphWebview.ts | Simplifies “Show Conflicts” to rely on the unified helper logic |
| src/webviews/home/homeWebview.ts | Simplifies “Show Conflicts” and updates continue/skip to new signatures |
| src/views/viewCommands.ts | Updates paused-op continue/skip view commands to new signatures |
| src/views/commitsView.ts | Removes dead code for revealing paused operation status in Commits view |
| src/commands/git/rebase.ts | Routes rebase conflict/already-in-progress handling through the unified helper (removes redundant toasts/buttons) |
| src/commands/git/merge.ts | Routes merge conflict/already-in-progress handling through the unified helper |
| src/commands/git/cherry-pick.ts | Routes cherry-pick conflict/already-in-progress handling through the unified helper; updates skip signature |
| src/commands/git/revert.ts | Routes revert conflict/already-in-progress handling through the unified helper |
| CHANGELOG.md | Documents the behavioral unification and removal of Commits-view focus stealing |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Rebase Successful
Summary
Generated by Merge Mate at 2026-07-10 16:02:04 UTC |
9683979 to
973f4c4
Compare
Unifies every paused merge/rebase/cherry-pick/revert surfacing decision into showPausedOperationStatus: Graph WIP details (with the conflict banner) when available, or the rebase editor for rebases when the Graph is gated. Drops the Commits-view focus-steal and its now-unused reveal, removes the redundant "Open Rebase Editor" toast buttons, and makes "Show Conflicts" consistent across Home, Graph, and the rebase editor.
Splits onRebaseChanged by pause type: conflict pauses follow the unified paused-operation surfacing rule (Graph WIP details when accessible, the rebase editor when gated), while interactive pauses (todo editing, edit, reword, break) keep auto-opening the rebase editor as before.
973f4c4 to
c10e36b
Compare
Description
Closes #5488
Unifies how GitLens surfaces a paused/conflicted Git operation (rebase, merge, cherry-pick, revert) into a single rule and a single code path, eliminating the "triple reaction" and the host-dependent "Show Conflicts" behavior.
The rule
gitlens.showGraphshow-wip— selects the WIP row and forces the details panel visible; the paused-op/conflict banner renders itself for all four op types. Plain reveal, notenter-resolve(no forced AI mode).edit/reword/breakstill opens the rebase editor as today.Changes
showPausedOperationStatusnow owns the rule (Graph WIP details, or the rebase editor for a gated rebase). Adds a colocatedisGraphAccessiblecheck andrevealPausedOperationInGraphdispatch; drops thecontainer.views.commitsreveal. TheopenRebaseEditoroption becomesfromRebaseEditor(used by the in-editor "Show Conflicts").onRebaseChangedsplits by pause type: conflict pauses route through the helper; interactive pauses keep the existingviewColumn/background/preserveFocusreword logic.hasActionableRebaseStatenow also returnshasConflicts, avoiding a second status call.gitlens.showCommitsView, keep the plain informational toast, and drop the redundant Open Rebase Editor toast buttons.type/openRebaseEditordecision — the helper decides.CommitsView.revealPausedOperationStatus.The explicit Open Rebase Editor buttons (Home/Graph/tree paused-op nodes), the passive tree/banner renders, and the AI
enter-resolveflow are intentionally unchanged.Testing
Build +
check+ unit tests pass. Live-exercised viavscode-inspectoron a conflict fixture (subscription/gating simulated) — all six cases pass, no Commits view focus-steal in any of them, console clean (only pre-existing Graph host warnings):fromRebaseEditor), never the Commits vieweditpause (no conflict)openOnPausedRebase: false+ wizard conflict