新幹線でぼーっとしている時間を有効活用すべく、新幹線Wifiを駆使して調べました。
目的
処置案1
コミット前にスクリプトで処置します。コミットする人が私一人ならこれでいいです。
# 1. テキストファイルをリストアップし、UTF-8/LF改行に変換して上書き find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs nkf -w -Lu --overwrite # 2a. 行末に空白のあるテキストファイルをリストアップし、処置して上書き find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs grep -lzP "\ \n" | xargs sed -i 's/\ *$//' # 2b. 末尾Tabもあわせて削除(sedで、SpaceとTabは'\s'で表現できる) find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs grep -lzP "\t\n|\ \n" | xargs sed -i 's/\s*$//' # 2c. README.mdなどのMarkdownは末尾空白2個で改行なので除外する場合 find . -type f -not -path "*/.git/*" -not -name '*.md' | perl -nle 'print if -f && -T' | xargs grep -lzP "\t\n|\ \n" | xargs sed -i 's/\s*$//'
[3/25] grep -lzP "\t\n|\ \n"に修正しました。
処置案2
pre-commit hookを使うと、コミット前に処置できるようです。複数の人がコミットするなら、ここで処置すべきです。余力があれば帰りの新幹線で。。。寝てました (-_-;)
処置案3
既に行末スペース等でよごれてしまったリポジトリは、表示の際のオプション設定できれいにdiff表示できます。
git diff -w
GitHubでWebブラウザでdiff表示している時も、URL末尾に「?w=1」を付ければ機能します。
備考:GitHubの秘密
次の新幹線テーマ
- 1行スクリプト化・・・つまり「ワンライナー」を目指したいのですが、意外と難しいのです。
- Subversionの#Date, #Revisionのように、gitでもテキストファイルに日付とリビジョンを埋め込みたいです。post-checkoutとpre-commitで対応でしょうか?