WinMerge は、オープンソースの Windows 用比較・マージツールです。WinMerge は、フォルダとファイル両方が比較でき、理解しやすく扱いやすいテキスト形式で差異をビジュアルに表現します。
Javaなどバイナリファイル(classやjar)などを比較対象から除外したい場合、フィルターを作成する。 WinMerge のファイルフィルタ
f: はファイルのパターンを正規表現で指定する。
d: はディレクトリのパターンを正規表現で指定する。
def: のところで選択するinclude と exclude の意味が、普通の感覚と逆になっている。
def: include と指定すると、設定ファイルで指定されたパターンのファイルが比較対象とならない。
def: exclude と指定すると、設定ファイルで指定されたパターンのファイルだけが比較対象となる。
## This is a directory/file filter for WinMerge ## This filter suppresses various binaries found in ADAMulti source trees name: Java desc: Suppresses various binaries found in Java source trees ## This is an inclusive (loose) filter ## (it lets through everything not specified) def: include ## Filters for filenames begin with f: ## Filters for directories begin with d: ## (Inline comments begin with " ##" and extend to the end of the line) f: \.class$ ## class file f: \.jar$ ## jar file d: \\classes$ ## class files d: \\log$ ## log files
ファイルまたはフォルダ選択画面時の下側にある「フォルダー:フィルター」に「log.flt」を指定する。
## This is a directory/file filter template for WinMerge name: Log desc: Longer description ## Select if filter is inclusive or exclusive ## Inclusive (loose) filter lets through all items not matching rules ## Exclusive filter lets through only items that match to rule ## include or exclude def: include ## Filters for filenames begin with f: ## Filters for directories begin with d: ## (Inline comments begin with " ##" and extend to the end of the line) f: \.log$ ## Filter for filename d: \\log$ ## Filter for directory
ツール→フィルタ→行フィルタに正規表現を追加して、行フィルタを有効にすると対象行が違っていても比較対象から除外してくれる。
WinMergeの比較処理前に正規表現フィルタのプラグインで差分を無視したいテキストを定義する
PrediffLineFilterフィルタの設定にて、正規表現を使用して先頭日時を除外して比較する。
似た機能に行フィルタがあるが、それだと行全体が除外されてしまう。
設定 | 入力 |
---|---|
大文字小文字の違い | |
正規表現を使用 | ✓ |
検索文字列 | ^\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}.\d{3} |
置換後の文字列 |
メイン画面の[プラグイン]→[比較前処理プラグイン]→[PrediffLineFilter.sct]にチェックが入った状態にします。
「選択されたファイルは同一です」で何も表示されない場合、Diffコンテキストが「0:で差分のみ」になっている。同じでも全行表示したい場合、Diffコンテキストで「全行」にする。
メニューの [表示(V)] → [Diffコンテキスト(D)] から希望の設定を選択する。
https://hirooooo-lab.com/development/winmerge/