WinMergeを使って以下のように同じフォルダ構造を持つ二つのフォルダa1、a2を比べることを考えます。
このとき、例えば bin/resoures フォルダはa1とa2とで全く同じ、しかもとても容量の大きいフォルダであると仮定しましょう。
そのようなとき、a1とa2とを比較する処理は、bin/resourcesの比較もやってしまうので、とても時間がかかってしまいます。
このような無駄な比較で時間を取られたくない時に便利なのが、WinMergeのFilter(フィルタ)機能です。
C:.
├─a1
│ ├─b
│ │ ├─c
│ │ └─d
│ ├─bin
│ │ ├─data
│ │ └─resources
│ └─trash
└─a2
├─b
│ ├─c
│ └─d
├─bin
│ ├─data
│ └─resources
└─trash
はい、ずばりこの場合、bin/resourcesフォルダは比較対象から外したいですよね。そのような場合は、Winmergeで、
「ツール」>「フィルタ…」コマンドを起動させます。
すると、フィルタファイル.fltのリスト画面が出てくるので下の方にある「新規」ボタンを押して自分だけのフィルタファイルを作成します。
まず、name:と書かれた行に、自分のフィルタ名を書きます。自分のものだとわかる名前なら何でもよいでしょう。
続いて、フィルタファイル末尾に以下を追記して、
d: \\bin\\resources$
保存し、フィルタダイヤログに帰ってきたなら、OKを押します。
そうすると再度比較するかという旨のメッセージが出るので、再度比較させると、、
bin/resourcesのフォルダだけ、比較画面に表示されなくなりました!
(なお、以降にまたWinMergeを立ち上げ直したときに、いま作ったフィルタがデフォルトで有効になっているわけでもないようなのでこれは毎回、「ツール」>「フィルタ…」でフィルタリストを開き、自分のフィルタファイルをダブルクリックする必要があるようです。)
さて上記のd: とは何でしょうか。
これはWindowsばかりやっていると、d:ドライブのことかと思ってしまうのですがそうではありません。
これはdirectory(Unix系OSにおける、Windowsのフォルダと同じ意味の言葉)のd: です。
特定のファイルだけ比較をやめさせたい場合は、
f: \\.bak$
などとやるわけです。f:はおそらくfileのfで間違いないと思います。
上記を知ったことでいままでとても時間のかかっていた、node_modulesフォルダや、.svnフォルダ、その他比較からは外したい重たいフォルダなどを、自在に比較対象から外すことができるようになり、フォルダ間比較や、手動マージ作業がとても楽になるかと思うので、
みなさんもぜひ試してみてください!