Umi Uyuraのブログ

プログラミング関連の作業ログ

定形.gitignore出力ツール「gibo」も比較してみた

先日こんなエントリを書いてみたんですが。

定形の.gitignoreを出力してくれるツールを比較してみた - Umi Uyuraのブログ

Qiitaを見ていたら simonwhitaker/gibo というツールもあるみたいなので、こっちも含めて比較してみることにしました。

比較してみた

インストール方法

Homebrewで提供されています。 自分はMac+Homebrewで環境を作っているので、導入が簡単で良いですね。

$ brew install gibo

使い方

こちらも基本的に同じで、対応している.gitignoreの一覧を出力するものと、指定した言語の.gitignoreを出力するものがあります。

対応している.gitignoreの一覧

$ gibo --list

.gitignoreを出力

$ gibo appceleratortitanium

複数指定はスペース派のようです。

$ gibo appceleratortitanium node

対応.gitignore数

giboに関しても、.gitignoreの元データは github/gitignore を使っていました。

よって、数としては前回紹介したjoeと同じで、独自データを追加しているgitignore.ioの方が多いということになります。

データの所在

giboはインストールすると、ホームディレクトリに以下のフォルダを作成して、.gitignoreのテンプレートを保存します。

~/.gitignore-boilerplates

このフォルダの中身は github/gitignore をcloneしたものになっています。

よって、 github/gitignore が更新された場合、これをpullすることで最新状態にアップデートすることができそうです。

実際には、ちゃんとアップデート用のオプションが用意されているので、これを実行することで最新の状態になります。

$ gibo -u

強いて言うなら、ホームディレクトリにフォルダを作られたりするのが気になる人には向かないかもです。(自分は若干気になる)

gitignore.io/joeの場合

gitignore.io/joeも github/gitignore を参照していますが、gitignore.ioの場合はAPIサーバーに、joeの場合はツールに同梱する形で配布しているため、基本的にはツール自体がアップデートされないと、新しいテンプレートを取得できない構造にはなっています。

独自.gitignoreテンプレート

わかりやすいところにテンプレートがあるもう一つの利点としては、独自の.gitignoreを設置することができます。

例えば、 ~/.gitignore-boilerplates 内に hoge.gitignore を作成しておくと、他の.gitignoreと同様、以下のコマンドで使うことができます。

$ gibo hoge

頻繁に使う.gitignoreがある場合は、自分で追加して使うというのもありかもしれません。

実行速度

joe同様、テンプレートをローカルにインストールして使うタイプなので、実行速度は早いです。

その他

どのツールもそうですが、サポートしている言語が多いこともあり、指定するときにスペルを忘れてしまったり、打ち損じたりすることがあると思います。

その点、giboはbashzsh用にタブ補完をするための設定ファイルを用意してくれているので、その点は使いやすそうです。

Tab completion in bash and zsh

1点注意するとすれば、テンプレートファイルは基本的に先頭が大文字になっているのですが、補完は大文字小文字を区別しているので、最初の文字は大文字にして入力する必要があります。

$ gibo app[tab]     # 候補なし

$ gibo App[tab]
AppEngine             AppceleratorTitanium

まとめ

ちょっと項目を見直しつつ、前回と同じような感じでまとめてみます。

  gitignore.io joe gibo 補足
対応数
github/gitignoreと比較して)
+αあり 同じ 同じ gitignore.ioにはオリジナル分が追加されている
データの所在 オンライン ローカル ローカル giはネットに繋がっていないと使えない
実行速度 遅い 早い 早い joeとgiboはローカルにデータを持っているので早い
更新性 × gitignore.ioとjoeは基本的にツール側のアップデート待ち
giboはテンプレートのリポジトリを直接更新できる
カスタマイズ性 × × gitignore.ioとjoeはツール依存
giboはローカルのリポジトリに追加することでテンプレートを増やすことも可能
実体 シェル関数 Pythonスクリプト シェルスクリプト  

ちなみに、joeがpythonベースという点はありますが、動作環境としては3ツールいずれもMac/Windows/Linuxをサポートしています。

joeとgiboがインストールタイプということで似ていますが、

  • テンプレートの大元になっている github/gitignore の更新に追従しやすい
  • 補完のサポートがある
  • Pythonを導入しなくても使える

という感じで、導入のしやすさや使いやすさの点でgiboの方が良い気がしてきましたので、joeから乗り換えてしまおうかと思っています。