Edited at
GitDay 2

プルリクエストを自動補完してcheckoutする

More than 5 years have passed since last update.


問題

プルリクエストのレビュー、動作確認をするためにローカルでcheckoutしたいが、ブランチ名を調べて入力するのが面倒くさい。別名をつけてcheckoutできるようにする方法があるが、プルリクエストの番号を調べる必要があってそれも面倒。

もっと簡単にcheckoutしたい!!!


解決策

プルリクエストの一覧からブランチを選択してcheckoutできるようにしました。

BIjYohy0TtY.gif


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で新しく作ったトークンを入力します。


~/.netrc

machine api.github.com

login GitHubユーザ名
password パスワードorアプリケーショントークン

パスワードとかを書いているのでファイルの権限には気をつけてください。

chmod 600 ~/.netrc

インストールできていればoriginがGitHubに向いているようなgitリポジトリでprfetchコマンドを叩くと、プルリクエスト一覧が標準出力されます。

Screen Shot 2013-12-01 at 11.59.01 PM.png


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 氏はなかなかのナイスガイであると、付け加えさせていただきます。