まとめ
次のような関数をつくって、できるかぎり自動化しています。
openissue() {
branchname=`echo $1 | tr A-Z a-z | sed -e 's/ /-/g'`
issuenumber=`gh issue create --title $1 --body "" | tail -1 | cut -d / -f7`
git checkout -b "$branchname#$issuenumber"
}
pullrequest() {
branch=`git branch --show-current`
issuenumber=`echo $branch | cut -d# -f2`
url=`gh pr create --title "$1" --body "Close #$issuenumber"`
chrome-cli open $url
}
closebranch() {
currentbranch=`git branch --show-current`
git checkout master
git pull origin master
git push --delete origin $currentbranch
git branch -d $currentbranch
}
次のように使います。
# タイトルを"Awesome feature"にしてissueを作成。
# awesome-featureブランチにチェックアウト。
openissue "Awesome feature"
# 引数をタイトルにプルリクエストを作成。
# 自動でプルリクエストのページをchromeで開くので、チェック不要ならそのままマージする
# マージすればissueは自動で閉じる
pullrequest "スーパー凄い機能を実装"
# masterブランチに切り替え。
# ローカル、リモートそれぞれのawesome-featureブランチを削除する
closebranch
どうしてもmasterで開発してしまう人に
個人開発をしていると、
- issueを立て、ブランチを切り替える
- issue単位で実装を行う
- プルリクエストを送る
- プルリクエストをマージする
- イシューを閉じる
ということを面倒くさがって、masterでとにかくなんでもやってしまうことが多くありました。
しかしコミットの管理や振り返りを考慮すると、上記の流れは個人開発でもきちんとやっておきたい。
そのために面倒な操作をできるかぎり排除してみたのが、上述のシェルです。
工夫のポイント
- イシューを設定したら、自動でイシュー番号を付与したブランチにチェックアウトする
- プルリクエストは、イシューを自動で閉じれるような形式で作成する
- 実装後はfeatureブランチを簡単に捨てられるようにする
次のようにしたことで、(手動で)githubを開いたり、gitコマンドを打ったりすることはなくなりました。
機能開発を並行しないシンプルな開発であれば、これで十分気持ちよくやれると思います。
みなさんはどうしていますか
完全に独自の工夫なので、これが良い方法かどうかは自信がありません。
みなさんは何か工夫していることはありますか。よろしければ教えてください。