Pocket

DiffMergeとは

DiffMergeは、SourceGear社が開発している、無料のGUIのdiffツールです。Windows、MacOS、Linuxに対応しています。

多くのGUI diffツールと同じく、フォルダ同士の比較、ファイル同士の比較ができます。

特に気に入っているわけではありませんが、Joen On Softwareという本で知っていらい、Windows、MacOS、Linuxどれでも使えることもあり、なんとなく使っています。

ファイルの比較

ターミナルのdiffコマンドは、ファイル内容が同じかどうかの確認には、よく使います。でも、どの行が違うかなど差分の詳細を見るには、使いづらいです。

GUI diffツールは、どの行が違うかだけでなく、行の中のどの部分が違うかを強調表示してくれます。

フォルダの比較

放置ブランチとmasterブランチを比較するときに使います。具体的には、放置ブランチを別のフォルダにチェックアウトしておき、masterブランチのフォルダを比較します。削除しても問題ないことを確認してから、放置ブランチを削除します。

かつて日付フォルダ管理だった頃は、diffツールでフォルダ比較していました。最近は、ほとんどのプロジェクトをgit管理するようになったので、日付フォルダをdiffすることはなくなりました。

git difftool

Sourcetreeやgit gui、git diffコマンドの差分表示は、充分わかりやすいです。多くの場合は、これですんでしまいます。

ただし、変更箇所が多かったり、微妙な変更を確認したい場合は、DiffMergeを使うと、確認しやすいです。左側に変更前のファイル全行、右側に変更後のファイル全行が表示されるので、一覧性は抜群にいいです。

DiffMergeをインストールした後、最初の一回だけ、gitのグローバル設定の diff.tool に "diffmerge --nosplash" を登録します。そして、git difftoolと実行します。

インストール

公式サイトからダウンロード

sourcegear > Downloads > DiffMerge のページを表示します。

一覧の、「Ubuntu 12.04 LTS("Precise") and newer (64bit)」 にチェックをつけて、「Download Now」ボタンをクリックします。

ターミナルでwgetでダウンロードするなら、

aptコマンドで、ダウンロードしたdebファイルをインストールします。

libpng12-0

ところが「依存: libpng12-0 (>= 1.2.13-4) しかし、インストールすることができません」と表示されて、DiffMergeをインストールできませんでした。

次のようにして、libpng12-0をインストールしてください。その後、DiffMergeをインストールしてください。

libcanberra-gtk

DiiffMergeのインストールが完了し、DiiffMergeを起動したところ、ターミナルに「Failed to load module "canberra-gtk-module"」と表示されました。DiffMergeは起動できるし、動きに問題ないようです。

canberra-gtk-moduleは、サウンド関係のモジュールのようです。メッセージが気になる場合は、canberra-gtk-moduleをインストールしてください。

起動方法

ターミナルから起動するときは、最後に & をつけて、起動します。

日本語設定

インストール直後は、日本語が文字化けしてしまうので、次の設定をします。

メニュー[DiffMerge] > Preferences...

左ペイン > File Windows > Rulesets

Default Ruleset の [Edit...]ボタン

Fallback Caharacter Encoding Optionsの一覧から
Use Named Encoding Below にチェックをつけて

Try Named Character Encodings下の
最初のプルダウンを「Unicode 8 bit (UTF-8) 」に選択して、

[OK]ボタン

それでも、日本語が文字化けするときは、拡張子ごとの設定が優先されているので、拡張子ごとの設定をオフにします。

メニュー[DiffMerge] > Preferences...

左ペイン > File Windows > Rulesets

Custom Rulesetsの下
Enable Custome Rulesetsのチェックをはずします。

[OK]ボタン

DiffMergeを知ったきっかけ

DiffMergeを知ったのは、Joel Spolsky著「Joel on Software」です。続編か続々編だったかもしれません。本の中で、SourceGear社、創業者・開発者のEric Sink、製品のDiffMergeをすすめていました。

そういえば、Eric Sink著「Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方」も読んだことを思い出しました。

Joel Spolsky (著), 青木 靖 (翻訳) オーム社 2005/12