git-gutter.el を導入してみました

どうにも色々と勉強会の準備とかをしなければならないような感じになりました. まぁ社内なので気は楽です.

結構前から使おうとは思っていたものとして, git-gutter.el がありました. 最近はプログラミングに積極的になってきたというのもあるので, この勢いで導入してみました.
http://d.hatena.ne.jp/syohex/20121218/1355841737
どんどんバージョンアップされているようです.

さて, ちょっと話は逸れますが, 私のメイン環境は Gentoo Linux で, SSD 80GB と HDD 2TB を積んでいます. SSD はシステム領域にしか使わないため, 一番領域を使う/home は, HDD をマウントしています.
ここまでならまぁ普通なのですが, /home は単純な symlink で, 実体は/mnt/ にマウントされた HDD の home ディレクトリになっています.

なんでこんな構成になっているのかというと, 元々 HDD のみの環境だったのに, SSD を導入した際に, 元の環境を維持したままとりあえず移行するために, このような fstab を書いています. 万が一動作しないときには, そのまま HDD を/ にマウントすればよいだけにした感じです.

こんな環境だと, ディレクトリ移動がちょっと変な感じになります. /home からホームディレクトリにアクセスすると, ~/ になりますが, 実体としては/mnt/home になっているので, ルートディレクトリを取るとこっちの表記になったりします.

git-gutter が悪いというか, 私の環境がおかしいせいだとは思いますが, どうにも git-gutter が動いてくれませんでした.

調べてみると, git diff を実行したときのこのコマンド.

git --no-pager diff --no-color --no-ext-diff -U0  ../../../../../../home/derui/develop/ 〜

../../../../../../ と並んでいますが, このアクセスの仕方だと, git がこのファイルを repository 内のファイルと認識できないため, エラーとなっていました.

とりあえず対策としては, git-gutter:relative-path で, file-relative-name を使っている部分を, 渡されたファイル名をそのまま返すようにしたら上手くいきました. これが正しいかどうかは別として.

こんな環境じゃない人にはまったく役には立ちませんが, こんなこともあるんだというメモ書きです.