diffコマンドの罠

更新したファイルのマージ作業中に差分とることってあるよね。
3000行ぐらいのプログラムに対してdiffコマンドを打ったところ差分が6000行表示された。
つまり全部差分になってる。そんなわけあるかい。

考えられる原因①空白部分が実はタブ

diffさんはtabと空白を区別するけどわかりやすく表示してはくれない。
差分上では同じに見えてもtabが空白になってたりする。
解決策.vimで開いてタブか確かめる

考えられる原因②改行コードが違う

今回はこっち。
vimからしか上書きできないはずなのに
何故改行コードが変わったのかはわからんが
サクラで開いてみたところCR-LFがLFになっているようだ。
解決策1.改行コードを無視して差分を取
diff --strip-trailing-cr 【file1】 【file2】


解決策2.改行コードを変換する
viで開いたあと

:setlocal fileformat=doc
:setlocal ff=doc

※改行コード
CR-LF = dos
LF = unix
CR = mac

:setでやるとその改行コードが
全体の標準になることがあるらしいので
ここは:setlocalを使用したほうが今後の自分にやさしそう。