svn diff に色を付ける方法まとめ

2011-02-25

svn diff に色を付ける方法まとめ

svn diffは白黒で分かりにくいので、色を付けたいなと調べた結果をまとめ。

1. vimを使って色付け

職場の人に教えてもらいました。以下のようにsvn diffの結果をパイプでvimに渡してあげる方法。

1
svn diff | vim -R -

毎回コマンド打つのが面倒なので、少し工夫して簡単なコマンドに置き換える

1
2
3
4
5
6
7
vi $HOME/bin/svndiff
---------------------------------
#!/bin/bash
SVN="/usr/bin/svn" #環境に合わせて変えるべし
VIM="/usr/local/bin/vim" #環境に合わせて変えるべし
$SVN diff $@ | $VIM -R -
---------------------------------

  引数を取るので、ファイル指定のsvndiffも可能。 ただし、diffの結果を必ずvimで開くので、鬱陶しいと感じる人もいると思う。 ※$HOME/.vimrc にせめて次の一文を記載(色付け指定)

1
syntax on

 

2 colordiff使う方法

ネットでは、この方法もよく使われている模様。 http://colordiff.sourceforge.net/をインストールする。 後は、svnの設定ファイルでdiffコマンドを指定する。

1
2
3
4
5
vi $HOME/.subversion/config
----------------------
[helpers]
diff-cmd = colordiff
----------------------

これで、特に意識せずにsvn diffに色が付きます。   ちなみに、colordiffデフォルトの色はチカチカして(*‘ω‘ *)ィャンと思ったので、/etc/colordiffrcを次のように変更しました。

1
2
3
4
5
6
7
$ diff colordiffrc colordiffrc_orig
23,24c23,24
< newtext=darkyellow
< oldtext=darkcyan
---
> newtext=blue
> oldtext=red

 

3. docdiff使う

これは、色付+単語単位でdiffを出せるという素晴らしき物。 http://www.kt.rim.or.jp/~hisashim/docdiff/からダウンロードしてインストール。(rubyが必要です。)   docdiffをsvn diffで美しく使うには引数指定が必要なのだけど、svnの設定ファイルではコマンドの引数指定が出来ない。 そのため、次のように自分用docdiffコマンドを作って、それを指定するようにする。   ・オレオレdocdiff作成

1
2
3
4
5
6
vi $HOME/bin/mydocdiff
-------------------------
#!/bin/bash
DOCDIFF_PATH="/home/hoge/docdiff-0.3.3/" #環境に合わせて変えるべし
${DOCDIFF_PATH}docdiff.rb --ascii --lf --tty --digest $6 $7
-------------------------

上と同様にして、svn diffのコマンドとしてオレオレdocdiffを指定

1
2
3
4
5
vi $HOME/.subversion/config
----------------------
[helpers]
diff-cmd = mydocdiff
----------------------

  色も付くし、単語単位だから修正範囲が見やすい。いい感じ。   以上、svn diffに色を付けるだけで、プロジェクト全体のバグが減るといいなぁと切に願う。