Skip to content

feat: Cherry-pick/Revert機能を追加#19

Merged
HMasataka merged 15 commits intomainfrom
feat/v1.1-cherry-pick-revert
Feb 27, 2026
Merged

feat: Cherry-pick/Revert機能を追加#19
HMasataka merged 15 commits intomainfrom
feat/v1.1-cherry-pick-revert

Conversation

@HMasataka
Copy link
Owner

概要

Cherry-pickとRevertのGUI機能をフルスタックで実装。バックエンド(git2-rs)からフロントエンド(React)まで一貫した5層アーキテクチャで構築。

変更内容

バックエンド(Rust)

  • Cherry-pick/Revertの型定義・トレイト・エラー型を追加
  • git2-rsによるCherry-pick/Revert実装(コンフリクト検出対応)
  • Tauriコマンド登録
  • 統合テスト追加

フロントエンド(React/TypeScript)

  • Cherry-pickページ: ブランチ選択ドロップダウンから他ブランチのコミットを取得・表示し、cherry-pick実行
  • Revertページ: コミット履歴からRevert対象を選択・実行
  • IPC サービス・Zustandストア追加
  • 共通コンポーネント(OperationPreview等)・フック(useCommitLog, useCommitSearch)追加
  • サイドバーにCherry-pick/Revertナビゲーション追加(Advancedセクション)
  • CSS重複解消・operation.cssに一本化

テスト

  • Rust統合テスト
  • フロントエンドテスト(gitStore, Cherry-pick/Revertページ)

動作確認

  • Cherry-pickページでブランチ選択→コミット表示→cherry-pick実行
  • Revertページでコミット選択→revert実行
  • コンフリクト発生時にコンフリクトモーダル表示
  • サイドバーのナビゲーション動作
  • task check パス

🤖 Generated with Claude Code

HMasataka and others added 15 commits February 27, 2026 19:12
CherryPickMode/CherryPickResult/RevertMode/RevertResult型、
CherryPickFailed/RevertFailedエラーバリアント、
GitBackendトレイトに8メソッドを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
git2-rsのcherrypick/revert APIを使用した8メソッドの実装。
Normal/NoCommit/Mergeモード対応、コンフリクト検出・abort・continue、
mainline親番号設定、RevertMode::EditはNoCommitとして動作。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cherry_pick/is_cherry_picking/abort_cherry_pick/continue_cherry_pick、
revert/is_reverting/abort_revert/continue_revertの8コマンドを登録。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Normal/NoCommit/コンフリクト+abort/continue/デフォルト状態の
テスト10件を追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cherryPick.ts/revert.tsサービス層、gitStoreにcherryPicking/reverting
状態と8アクション、uiStoreのPageIdに新ページを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OperationPreview共通コンポーネント、useCommitLog/useCommitSearchフック、
statusSymbolユーティリティを追加。Cherry-pick/Revertページ間の重複を排除。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
コミットリスト(複数選択)、モード選択、変更プレビュー、
コンフリクト時のConflictModal連携を含むCherry-pickページ。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
コミットリスト(単一選択)、モード選択、変更プレビュー、
コンフリクト時のConflictModal連携を含むRevertページ。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
operation.css(共通レイアウト)、cherry-pick.css、revert.css、
components.cssにbtn-warningバリアントを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
stash.css/branches.cssからoperation系・preview系・stats系の重複を削除。
designs/stash/styles.css/branches/styles.cssからも同様に削除。
designs/shared/components.cssに.operation-buttonsを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
App.tsxにページレンダリング・状態初期化・ファイルウォッチャー連携、
SidebarにAdvancedセクション、main.tsxにCSSインポートを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gitStore.test.tsにcherry-pick/revertアクション20テスト、
statusSymbol.test.tsに4テストを追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
designsのモックアップに合わせてサイドバーの配置を修正。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
useCommitLog(HEADのみ)を削除し、ブランチ選択UIから
getBranchCommitsで他ブランチのコミットを取得する方式に変更。
Rebaseページの既存パターンを踏襲。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@HMasataka HMasataka merged commit f9c7844 into main Feb 27, 2026
5 checks passed
@HMasataka HMasataka deleted the feat/v1.1-cherry-pick-revert branch February 27, 2026 12:53
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