トップ «前の日記(2008-05-23) 最新 次の日記(2008-05-25)» 編集

2008-05-24 [長年日記]

_ 複数の diff を一気に見る GUI のツールってやっぱりないの?

terminal 原理主義の自分は当然

svn diff
svn diff | awk '/^Index/'
svn diff | awk '/^Index/ {print $NF}'
for i in `svn diff | awk '/^Index/ {print $NF}'`; do svn diff $i | nkf -w ; done | less

みたいなことをしてるんだけど*1、GUI のツールにこういうことのできるものを見かけたことがない。なんでだろう。

何が言いたいかというと、例えば TortoiseSVN などで commit する際、変更のあるファイルがリストアップされるでしょ? で、その diff を見ようと思ったら別な diff ツールに渡さなきゃいけないんだけど、そのとき一つ一つ開かないといけないのって面倒くさくない?って話。(これが間違いなら今回の話はもう全然意味ないです。)

ファイル一つだけで済んでるうちはいいんだけど、例えばメソッドを追加したのでプロダクトコードとテストコード両方いじりましたとか、テストデータもいじりましたとか、変更が複数のクラスに入りましたとか、あるわけじゃないですか*2。このとき、GUI 使いの人たちはどうやってその変更を一覧するのだろう、という疑問です。

いやね、絶対一覧できなきゃいけないってわけじゃないんだけど、一覧を見てるうちに「あれ、そういえばさっきいじってたファイルを add し忘れてるな」とか「しまった、何の気なしにちょっといじっておいたものをそのまま commit するところだった」なんてことに気づくことがちょこちょこあるし、複数の diff の間でうまく対応が取れていない*3ことに気づいたりするし、実際身近な GUI 使いの人の commit 忘れが自分より多い気がしてるのです。当然、使い手の個性もあるでしょうが。

第一、GUI の diff ツールって、確かにきれいに見えるんだけど実際の変更以外も全部表示されてるから、例えば変更の入った部分がファイルの末尾の方ばっかりとかだとスクロールがうざくないですか? コロコロコローって*4。そういうのって設定次第でどうにかなるもんなの? それでもやっぱ開いたり閉じたりしてるうちにさっき見てた diff の内容が頭から飛んじゃわない? 飛ぶよね。なんかやっぱ GUI の diff ツールって、書いてる途中のファイルの diff が見れればそれでいいと思ってんじゃないかって気がすんだよなぁ。

まとめ大事だよ、まとめ。まとめて見ようよ。

Tags: GUI CLI

*1 最後のは文字コードの混ざったファイル群の diff を全部 UTF-8 にして読むため

*2 複数のクラスに同時に変更が入るのはどうなんだという意見もあるだろうけど、実際問題インターフェイスを変えたいとかあるわけで。

*3 でもテストは通る

*4 そりゃなんかキーバインドがあるんだろうけど