kdiff3とP4Merge GUI 3ウェイマージツールの比較とEclipseでの設定方法

    はじめに

    前回の記事で、コマンドラインから3ウェイマージをするためのコマンド diff3を調べました。

    GNU Diffutilsを使い倒す!diff3を使って他人の修正ブランチを自分のブランチに3ウェイマージする | Futurismo

    今回は、GUIから3ウェイマージをするためのツールを調べてみます。2つのツールを試しました。

    • kdiff3
    • P4Merge

    いろんなツールがあるっぽい。

    version control – What’s the best three-way merge tool? – Stack Overflow

    環境

    • Windows 7 x64
    • Eclipse 4.2 Juno

    ダウンロード&インストール

    kdiff3のダウンロードとインストール

    LinuxライクなUIのkdiff3を試します。

    KDiff3 – Homepage

    以下のリンクからダウンロード。マルチプラットフォームでWindows,Mac,Linuxといろんなインストーラがおいてある。

    P4Mergeのダウンロードとインストール

    P4Mergeは版数管理システム Perforce(パワーフォース)のマージツールです。Perforce自体は有料だけれども、そのマージツールは無料なので、嬉しい。

    Visual Merge and Diff Tools | Perforce

     

     

    ダウンロードは以下から。

    • Perforce Downloads | Perforce
    • P4Merge: Visual Merge Toolの + をクリック
    • OSと32/64bitを選択して、ダウンロードを選択。
    • (とりあえず)Skip Registrationaを選択。

    インストール時にはいろいろと他のツールのインストールも求められますが、まずはP4Mergeだけを入れます。

    skitch.png

     

    差分比較

    起動して2つのファイルを指定すると差分比較できます。

    kdiff3

    skitch.jpg

    P4merge

    skitch.jpg

     

    マージ

    両者とも、3ウェイマージをサポートしています。3ウェイマージがあれば、衝突(Conflict)を自動解決できます。つまりは、2ウェイマージでは手動マージしかできないものが、自動マージできるということ。

    マージ (バージョン管理システム) – Wikipedia

    3つのファイルを指定します。

    kdiff3

    skitch.png

    ツールバーから マージ -> 現在のファイルをマージを選択してマージします。

    P4Merge

    skitch.jpg

     

    kdiff3とP4Mergeの比較

    kdiff3とP4Mergeでは、マージ結果が異なりました。

    • P4Mergeは自分の修正と相手の修正の両方を取り込んでマージ
    • kdiff3は相手の修正を優先してマージ

    個人的には、P4Mergeの機能を求めているので、P4Mergeのほうがよいかなという印象。P4Mergeはとてもカラフル。kdiff3は古くさいUI。見た目的には、圧倒的にP4Mergeに軍配が上がる。

    ただ、P4Megeはフォルダ指定の比較ができないが、kdiff3はできる。また、競合時の解決では、kdiff3はキーボードショートカットで選択できるが、P4Mergeでは選択できない。つまり操作性や機能面ではkdiff3のほうが優る。

    というわけで、一長一短でどちらがいいとはいえないようだ。

    Eclipseの外部ツールとして利用する

    Eclipseから比較ツールを利用したいことがたくさんある。External diff Tool Pluginを入れる。導入方法は過去記事を。

    Eclipseの比較エディタでWinMergeを使うためのメモ | Futurismo

    Eclipseを開き、ツールバーの

    • ウィンドウ -> 設定
    • 一般 -> 比較/外部ツール

    を選択。外部diff実行ツールでkdiff3または、P4Mergeを選択。

    コマンドライン引数に以下を入力。

    %first %first %second
    #それぞれ意味は、(ベース) (自分のファイル) (相手のファイル)
    skitch.png

     

    あとは、Eclipseで2つのファイルを選択して、右クリックから 比較 -> 相互(外部ツール)を選択すればよい。

    参考