Gitでタブ・スペースや改行コードなど体裁を統一する

この続きで履歴の方を書き換える方法はこちらに

Gitにはチェックアウト時、コミット時に適応できるフィルターをファイルの種類ごとに定義できる機能がある。

この機能をタブ・スペースや改行コードなど体裁を統一するために使ってみた。

まずは、こんなPerlスクリプトを用意して、

#!/usr/bin/perl
use Text::Tabs;
$tabstop = 4;
while (<>) {
    $_ = expand($_);
    s/[ \r\n]+$//;
    print "$_\n";
}

gitconfigに登録し、

[filter "normalize-text"]
    clean = /usr/local/bin/normalize-text.pl
    smudge = /usr/local/bin/normalize-text.pl

.gitattributesから呼び出せば完了である。

 *.php   eol=lf filter=normalize-text

少しGitが重くなってしまうなど欠点もあるが、
タブやスペースで悩まなくてすむひとつの方法であると
思う。

Visual Studio みたいに、勝手にスペースが入って、
うまく設定できないIDEにも有効だ。