fix(cherry-pick): continue/abort/skip, reset keybinding, and correct multi-commit order#16
Merged
Merged
Conversation
Blankeos
approved these changes
May 17, 2026
Owner
Blankeos
left a comment
There was a problem hiding this comment.
Good and well-scoped so I'll just merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes three bugs in the cherry-pick implementation.
Bug 1 β Critical: conflict resolution was impossible
show_rebase_options_menureceivedis_cherry_pickingbut the parameter was named_is_cherry_pickingand completely ignored β no menu items were built for it. When a cherry-pick hit a conflict the menu opened empty and the user was stuck with no way to continue or abort from the TUI.Fix: added
continue_cherry_pick(),abort_cherry_pick(), andskip_cherry_pick()git wrappers instatus.rs, and wired them into the options menu with keysc/a/s.Bug 2 β Dead keybinding:
<Ctrl-q>did nothingreset_cherry_pickwas declared in the config with default<c-q>but was never matched in the key handler.Fix: added the
matches_keycheck inhandle_keyso pressing<Ctrl-q>now clears the clipboard.Bug 3 β Wrong history order for multi-commit cherry-pick
The commit list is shown newest-first. Hashes were pushed to the clipboard in visual order and passed to
git cherry-pickunchanged β oldest commit ended up applied last, reversing history.Fix: the clipboard is reversed before being passed to
git.cherry_pick(), so oldest is applied first.Files changed
src/git/status.rsβ addcontinue_cherry_pick,abort_cherry_pick,skip_cherry_picksrc/gui/mod.rsβ fix_is_cherry_pickingdead param; add continue/abort/skip menu itemssrc/gui/controller/commits.rsβ wirereset_cherry_pickkeybinding; reverse hashes before paste