
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と実行します。
$ git config --global --add diff.tool "diffmerge --nosplash"
$ git difftool
Code language: PHP (php)
インストール
公式サイトからダウンロード
sourcegear > Downloads > DiffMerge のページを表示します。
一覧の、「Ubuntu 12.04 LTS("Precise") and newer (64bit)」 にチェックをつけて、「Download Now」ボタンをクリックします。
ターミナルでwgetでダウンロードするなら、
$ cd ~/Downloads
$ wget http://download.sourcegear.com/DiffMerge/4.2.0/diffmerge_4.2.0.697.stable_amd64.deb
Code language: PHP (php)
aptコマンドで、ダウンロードしたdebファイルをインストールします。
$ cd ~/Downloads
$ sudo apt install ./diffmerge_4.2.0.697.stable_amd64.deb
libpng12-0
ところが「依存: libpng12-0 (>= 1.2.13-4) しかし、インストールすることができません」と表示されて、DiffMergeをインストールできませんでした。
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
注意、'./diffmerge_4.2.0.697.stable_amd64.deb' の代わりに 'diffmerge' を選択します
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
diffmerge : 依存: libpng12-0 (>= 1.2.13-4) しかし、インストールすることができません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
Code language: JavaScript (javascript)
次のようにして、libpng12-0をインストールしてください。その後、DiffMergeをインストールしてください。
$ cd ~/Downloads
$ wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
$ sudo apt install ./libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
# diffmergeをインストール
$ sudo apt install ./diffmerge_4.2.0.697.stable_amd64.deb
Code language: PHP (php)
libcanberra-gtk
DiiffMergeのインストールが完了し、DiiffMergeを起動したところ、ターミナルに「Failed to load module "canberra-gtk-module"」と表示されました。DiffMergeは起動できるし、動きに問題ないようです。
$ diffmerge
Gtk-Message: 10:36:23.925: Failed to load module "canberra-gtk-module"
Code language: JavaScript (javascript)
canberra-gtk-moduleは、サウンド関係のモジュールのようです。メッセージが気になる場合は、canberra-gtk-moduleをインストールしてください。
$ sudo apt install libcanberra-gtk*
起動方法
ターミナルから起動するときは、最後に & をつけて、起動します。
$ diffmerge &
# スプラッシュ画面を表示しないで起動する
$ diffmerge --nosplash &
Code language: PHP (php)
日本語設定
インストール直後は、日本語が文字化けしてしまうので、次の設定をします。
メニュー[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 革新的ソフトウェア企業の作り方」も読んだことを思い出しました。
