ブランチ作成から Draft Pull Request 作成までを1コマンドで出来るように、シェルスクリプト自作した話
2024/02/12 追記
gbinit
実行時、現在のブランチがマージ先になるように、スクリプト改良しました。
はじめに
会社の業務などで、先に Draft Pull Request を作るケースがあるんですが、
その一連の作業が、少々手間で効率悪かったので、1コマンドですべてやってくれるシェルスクリプト自作しました。
読む前に注意
Mac 環境を前提として、記載しています。
他OSについては、各自環境に合わせて修正していただければと思います。
gbinit
自作したシェルスクリプト 事前準備
homebrew 等で、Git & GitHub CLI をインストールします。
brew install git
brew install gh
続いて、以下スクリプトを .zshrc に貼り付けます。
function gbinit() {
current_git_branch_name=$(git rev-parse --abbrev-ref HEAD)
command git switch -c $1
command git commit --allow-empty -m "[ci skip] Create branch"
command git push origin $1
command git branch --set-upstream-to=origin/$1 $1
read "yn?Would you like create pull Request?(y/n):"
case "$yn" in
[yY]*)
read "title?What do you name pull request title?:"
if [ $title ]; then
command gh pr create --title $title --assignee @me --draft --base $current_git_branch_name
else
echo "Error: Can't create pull request for not title."
return;
fi
;;
*)
return;
;;
esac
}
最後に .zshrc を読み込みます。
source ~/.zshrc
これで準備完了です。
使い方
以下コマンドを実行するだけです。
gbinit [branch-name]
途中で Would you like create pull Request?(y/n):
を聞かれますが、ここで n
を入力すると、Pull Request 作成せず、ブランチ作成のみで終わります。
y
を入力すると、Pull Request 作成フローに移行します。
その後 What do you name pull request title?:
が表示されるので、Pull Request のタイトルを入力して、最後に enter を押します。
(未入力で enter 押した場合は pull request は作成されません。)
GitHub CLI が起動するので、後は表示された内容を沿って入力してください。
Would you like create pull Request?(y/n):y
What do you name pull request title?:Test Pr 17
Creating draft pull request for test-pr-17 into main in bebeji-nappa/room-nappa
? Choose a template pull_request_template.md
? Body <Received>
? What's next? Submit as draft
https://github.com/bebeji-nappa/room-nappa/pull/76
解説
ここからは、シェルスクリプトの具体的な解説になります。
現在のブランチ名を取得
現在のブランチがマージ先になるように、
git rev-parse --abbrev-ref HEAD
というコマンド実行して、現在のブランチ名を取得して、変数に格納します。
current_git_branch_name=$(git rev-parse --abbrev-ref HEAD)
ブランチ作成から push まで
以下で構成されています。
command git switch -c $1
command git commit --allow-empty -m "[ci skip] Create branch"
command git push origin $1
command git branch --set-upstream-to=origin/$1 $1
gbinit ブランチ名
で実行した場合、
引数 $1
でブランチ名が取得できるので、それを使って、コマンドを作成しています。
最後に git branch --set-upstream-to=origin/$1 $1
を実行することで git pull が実行しやすいようにしています。
プルリク作成
プルリク作成は以下の部分です。
read "yn?Would you like create pull Request?(y/n):"
case "$yn" in
[yY]*)
read "title?What do you name pull request title?:"
if [ $title ]; then
command gh pr create --title $title --assignee @me --draft --base $current_git_branch_name
else
echo "Error: Can't create pull request for not title."
return;
fi
;;
*)
return;
;;
esac
read "変数名?プロンプト"
で入力待ち状態にしています。尚、bash の場合は、コマンド変わるので、注意です。
case
~ in
~ esac
構文で、条件分岐させて、
最終的に、タイトルまで入力したら command gh pr create --title $title --assignee @me --draft --base $current_git_branch_name
を実行してプルリクを作成されるようにしています。
最後に
シェルスクリプト自作出来るようになると、色々生産性上げれるようになるので、是非お試しください!
Discussion