nFact

n!

gitignoreを生成するgiboとgiを比較

はじめに

やみつきーさんのブログ
.gitignore作るなら、giboを使おう - 病みつきエンジニアブログ
を見て、初めてgiboの存在を知りました。

gitignore.io - Create useful .gitignore files for your project
普段自分はgitignore.ioのgiを使っているのですが、
この2つがかなり似ているように感じたので比較してみました。

どちらもターミナルから操作可能です。

giboはやみつきーさんのブログにある通り、
brewがあればbrew install giboで使えるようになります。

gihttp://www.gitignore.io/cliを参考にインストールすると使えるようになります。

オプションをコンマ区切りでとかスペース区切りでとかいうような
細かい違いはありますが、言語やフレームワークの名前を
入力するとそれらに合わせた.gitignoreファイルを
一発で生成することが出来る便利なコマンド
です。

比較

gi listgibo -lでそれぞれのコマンドで利用出来るものが
出てきますが、出力される項目を整理してdiffを取ると、

  • appcode
  • basercms
  • bower
  • codekit
  • django
  • dotsettings
  • elasticbeanstalk
  • elixir
  • freepascal
  • intellij
  • jabref
  • joe
  • justcode
  • komodoedit
  • laravel
  • latex
  • openfoam
  • ph7cms
  • phpstorm
  • puppet-librarian
  • pycharm
  • rubymine
  • senchatouch
  • silverstripe
  • tarmainstallmate
  • tower
  • wakanda
  • webstorm
  • xamarinstudio

これらがgiにのみ定義されています。結構多いですね。
でも、JetBrainsのIDE(AppCodeやIntelliJ,PHPStormなど)は、
giboではgibo JetBrainsにまとまっているようです。
なので、純粋にgiでしか利用出来ないものは少ないかと思います。
ちなみに、gi intellijgi appcodeで生成される.gitignoreは同じです。

また、giboのみ利用可能でgiで使えないものはありませんでした。

生成される.gitignore

ほんの少しですが違いがありました

gigiboが吐き出した.gitignoreの全diffをGistに上げておきます。
https://gist.github.com/nokok/10755225
diffは

diff -y  --ignore-blank-lines --ignore-matching-lines="^\#"\
 --suppress-common-lines gi_all gibo_all

で取りました。ゴミが残っています。ごめんなさい。

diffを見てみると、項目が少し追加されてたりディレクトリに/が付いてたりしているみたいです。
他はに長いので割愛します(おい

ネットワーク接続

あと、gigiboにはもう一つ大きな違いがあり、

giboは.gitignore生成にネットワークを必要としませんが、
giネットワーク接続が必須のようです。

which giをすると

gi () {
    curl http://www.gitignore.io/api/$@
}

が返ってきます。giは渡されたオプションをそっくりそのままサーバーのAPIに投げて、
その結果を表示しているようでした。

知らなかった...

つまり、

ネットワークに繋がっていない状態でgiを使用すると,,,

f:id:noko_k:20140416020208p:plain

エラーで使用できません

一方giboの方はと言うと、~/.gitignore-boilerplates
.gitignoreの元ファイルのようなものがあり、そこから生成しているようです。

なのでgibogibo --upgradeなどでたまに更新してやる必要がありますが、
ネットワークアクセスが無いところでも使えます
更に、ネットワークアクセスを必要としない分軽快に動いてる感じがします。

まとめ

眠い
giboの方が良さそう