| name | merge-pr |
| description | PRをマージして、マージ先のブランチへをチェックアウトします。 |
| argument-hint | [-b <target-branch>] |
| model | sonnet |
1. 引数のパース
引数は以下のオプションを受け付けます:
-b <target-branch>: ターゲットブランチを指定(デフォルト: $(git branch --show-current)で取得した現在のブランチ)
未コミットな変更がないか探す
-
現在のGitの状態を確認し、未コミットな変更がないか確認する
-
未コミットの変更がある場合は下記に従う
AskUserQuestionツールを使用して未コミットな変更をどう扱うか下記の選択肢を示す
- 未コミットの変更をStashする
- 未コミットの変更をDiscardする
-
2でユーザーが選択した選択肢があれば、それにしたがってGit操作を進める
PRを探して状態を確認する
- ターゲットブランチを対象として出されているPRを探す:
gh pr view <ターゲットブランチ>
もし複数のPRが見つかった場合は AskUserQuestionツールを使用してどのPRを対象とするか確認する
PRが確定したら下記コマンドを実行し、取得したPR番号とベースブランチを覚えておくこと
gh pr view <ターゲットブランチ> --json number,baseRefName
- PRがマージ可能か確認する:
gh pr view <PR番号> --json title,state,mergeable,mergeStateStatus,statusCheckRollup,reviewDecision
マージ可能なら次のステップへ、
マージが不可能ならその旨をユーザーに示してこのコマンドは終了
CIチェック中なら終わるまで待機し、完了してから判断。
PRをマージしてローカルに反映
- PRをマージする
gh pr merge <PR番号> --merge --delete-branch
- ローカルのGit情報を最新化する
git fetch --prune
- スタッシュした変更があればどうするか確認する
AskUserQuestionツールを使用してスタッシュ内容をどうするかどうかユーザーに問い合わせてください
- 退避した変更をapply(戻すが削除しない)
- 退避した変更をpop(戻すが削除する)
- なにもしない
※スタッシュした変更がなければなにもしない
注意事項
- このコマンドは最後まで必ず実行してください。
- 途中でエラーなどで進行不能な状態に陥った場合はユーザーにその旨を示して終了してください