はじめに

前回の記事で、コマンドラインから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つのファイルを選択して、右クリックから 比較 -> 相互(外部ツール)を選択すればよい。

参考