LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログです。

地味に面倒なブランチ作成〜WIPプルリクエストまでをコマンド1つで行う

フロントエンドエンジニアの岡田です。 やる気がでない時の最良の方法は、「とりあえず始めてみる」ことだと聞いたことがあります。 今回は、やる気がでないときでもコマンドを1つ叩くだけで、ブランチ作成〜WIPプルリクエストまで作ってくれるように設定をしましたのでご紹介します。

WIPプルリクエストを作るまでにすること

WIPプルリクエストを作るまでには、以下のことをしています。

  1. masterをチェックアウト&プル
  2. ブランチを作成
  3. 空のコミットを作成してプッシュ
  4. プルリクエストの作成
  5. ラベルを付ける

手順が多い上に、私が普段使っているSourceTreeでは、3. の空のコミットが作れません。そのため、ターミナルで操作しなければならず、面倒でした。 そんな時に同じチームの人が教えてくれた以下の記事を試してみました。

qiita.com

すごく便利です…!
これはぜひ使いたいと思い、さらに以下の機能を追加してみました。

  • プルリクエストのテンプレート(.github/PULL_REQUEST_TEMPLATE.md)が反映されるようにする
  • タイトルは指定した文字列(ブランチ名+issueタイトル)にする
  • プルリクエストbodyの1行目に任意の文字列を追加する
  • ラベルをつける(-l wip)
  • 自分をアサインをする(-a $(git config --global user.name))
  • ブランチ作成の前にmasterへ切り替えてプルする(git checkout master; git pull;)

実際の設定

hubのインストール

コマンドでプルリクエストを使うために、hubをインストールします。

brew install hub

.gitconfigにエイリアスを追加

~/.gitconfig に以下を追加します。

[alias]
  wip = commit --allow-empty -m \"[ci skip] wip commit\"
  mkwip = !"f() { git checkout master; git pull; git checkout -b $1; git wip; git push -u origin $1; open $(echo $1 $2'\n\n任意の文字列\n\n'\"$(<.github/PULL_REQUEST_TEMPLATE.md)\" | hub pull-request -F - -a $(git config --global user.name) -l wip); }; f"

以下のコマンドで動作します。

git mkwip ブランチ名 issueタイトル

完成したプルリクエストのスクリーンショット

f:id:lcl-engineer:20180702120404p:plain

まとめ

git mkwip ブランチ名 issueタイトル というコマンド自体も、自動作成+1クリックでコピーできる仕組みもつくりました。これでやる気がでないときも、とりあえず始めることができるようになりました。