問題
プルリクエストのレビュー、動作確認をするためにローカルでcheckoutしたいが、ブランチ名を調べて入力するのが面倒くさい。別名をつけてcheckoutできるようにする方法があるが、プルリクエストの番号を調べる必要があってそれも面倒。
もっと簡単にcheckoutしたい!!!
解決策
プルリクエストの一覧からブランチを選択してcheckoutできるようにしました。
1. プルリクエスト一覧を取得する
まずプルリクエスト一覧を取得します。そのためにprfetchというスクリプトを書きました。
手っ取り早く下記でインストールできます。
wget https://raw.githubusercontent.com/yuku-t/dotfiles/master/bin/prfetch
chmod +x prfetch
mv prfetch ~/bin # ~/bin はPATHに入っているとする
prfetchはruby-git, octokit.rb, netrcに依存しているので、それらもインストールします。(必要に応じて sudo
をつけてください)
gem install git octokit netrc
このnetrcというのはoctokitがGitHub APIを叩く際の認証情報を記述するためのもので ~/.netrc
に次のようなファイルを設置します。パスワードorアプリケーショントークン
となっているところには、ログインパスワードか、GitHubのApplication SettingのPersonal Access Tokensで新しく作ったトークンを入力します。
machine api.github.com
login GitHubユーザ名
password パスワードorアプリケーショントークン
パスワードとかを書いているのでファイルの権限には気をつけてください。
chmod 600 ~/.netrc
インストールできていればoriginがGitHubに向いているようなgitリポジトリでprfetchコマンドを叩くと、プルリクエスト一覧が標準出力されます。
2. percolを使って絞り込む
プルリクエストの絞り込みにはpercolを使います。これは複数行にまたがる標準入力からインタラクティブに一行を選択し、それを標準出力できるようにしてくれるコマンドです。
上のgifで途中ピンクの行が上下に動いていましたが、あの部分がpercolです。
下記でpercolをインストールします。(これも必要に応じて sudo
をつけてください)
easy_install percol
3. 選択されたプルリクエストをcheckout
最後に選択されたものをcheckoutすれば完了です。percolで選択された行のブランチ名を取り出してcheckoutします。全てを合わせるとこれで完了。
prfetch | percol | cut -f3 | xargs git checkout
おわりに
今回声を大にして申し上げたいのは percol最高 ということなのであります。
加えて開発者の @mooz@github 氏はなかなかのナイスガイであると、付け加えさせていただきます。