はじめに
前回の記事で、コマンドラインから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を試します。
以下のリンクからダウンロード。マルチプラットフォームでWindows,Mac,Linuxといろんなインストーラがおいてある。
- https://sourceforge.jp/projects/sfnet_kdiff3/
- KDiff3-64bit-Setup_0.9.97.exe
P4Mergeのダウンロードとインストール
P4Mergeは版数管理システム Perforce(パワーフォース)のマージツールです。Perforce自体は有料だけれども、そのマージツールは無料なので、嬉しい。
Visual Merge and Diff Tools | Perforce
ダウンロードは以下から。
- Perforce Downloads | Perforce
- P4Merge: Visual Merge Toolの + をクリック
- OSと32/64bitを選択して、ダウンロードを選択。
- (とりあえず)Skip Registrationaを選択。
インストール時にはいろいろと他のツールのインストールも求められますが、まずはP4Mergeだけを入れます。
差分比較
起動して2つのファイルを指定すると差分比較できます。
kdiff3
P4merge
マージ
両者とも、3ウェイマージをサポートしています。3ウェイマージがあれば、衝突(Conflict)を自動解決できます。つまりは、2ウェイマージでは手動マージしかできないものが、自動マージできるということ。
3つのファイルを指定します。
kdiff3
ツールバーから マージ -> 現在のファイルをマージを選択してマージします。
P4Merge
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
#それぞれ意味は、(ベース) (自分のファイル) (相手のファイル)
あとは、Eclipseで2つのファイルを選択して、右クリックから 比較 -> 相互(外部ツール)を選択すればよい。