@kyanny's blog

My thoughts, my life. Views/opinions are my own.

WIP (Work in Progress) な Pull Request を目立たなくする Chrome 拡張をリリース

Pull Request ベースの開発手法(いわゆる "GitHub Flow" というやつ)では、未完成のブランチに "WIP" という件名をつけて作業中である旨を示しつつ途中経過もレビューしてもらう、というのをよくやります。 Quipper ではそれに加えて "DONT MERGE" とか "DO NOT MERGE" というのもよく使っています。 WIP と同じ意味で使うこともあれば、レビューの過程で発生した議論にまだ決着がついていないのでマージしないでね、という意思表明として使うこともあります。

僕は一日にだいたい十個弱の Pull Request をレビュー・マージしています(個人差はありますが Quipper のデベロッパーの多くは似たようなものです)レビュー・マージのタイミングははやいほうが良いので、一日に少なくとも二回か三回は Organization の Pull Request 一覧ページを開いて、差分が小さく影響が軽微なものや優先順位の高そうなものから処理しています。あるとき、「塩漬け」状態の Pull Request がたまってくるにつれ、一覧ページでどの Pull Request を開くべきか(逆に、どれを一旦無視してよいか)判断するのが負担になっていることに気づきました。

そこで、「塩漬け」状態の Pull Request は件名にそれとわかる文字列が含まれていることに注目し、それらの Pull Request を視覚的に見分けやすくする Chrome 拡張を作りました。

WIP Pull Request Unhighlignter for GitHub
https://chrome.google.com/webstore/detail/wip-pull-request-unhighli/plebohahijhmebohbcifnaccfkjdgppe

ソースコードは GitHub で公開しています。
https://github.com/kyanny/chrome-ext-wip-pull-request-unhighlighter-for-github

この Chrome 拡張をインストールして GitHub の Pull Request 一覧ページのどこかを開くと、件名に "WIP" が含まれる Pull Request を灰色にマスクして透明度を少しあげます。

screen shotデモ用のページ

パッと見てすぐ見分けがつくようになりました。

件名に入れるのが "WIP" なのか "DO NOT MERGE" なのかはチームによるので、 Chrome 拡張の設定ページから件名にマッチさせるパターンをカスタマイズできるようにしました(正規表現が使えます)。マスクする色や透明度もお好みにカスタマイズ可能です。

screen shot

どうってことないアイデアだし機能も最小限なので、思いついて動くものを作るまではさほど時間がかからなかったのですが、ブラッシュアップする過程でいろいろな知見が得られ、良い経験になりました。技術的に工夫した点、学んだこと、などについては別エントリとして公開する予定です。

Creative Commons ライセンスの Git ロゴを MIT ライセンスのコードと同梱した場合のライセンス表記についてアドバイスをくださった @hail2u_ さん、ありがとうございました。