Seasons.NET

ちょっとした技術ブログです

git mergetoolについてあれこれ試した結果

gitでは、mergetoolというコマンドを打ち込むと
マージの為に設定されたツールが立ち上がります。

Macの場合、標準では、opendiffが選ばれます。
とはいえ使い勝手がよいかというとそうでもないのでせっかくの機会ですから
色々試してみました。


●Changes.app
これは、日頃差分ツールとして愛用しているシェアウェアですが、
実は、Git mergetoolとしても設定できるそうで。


こちらのページが参考になります。

任意の場所にgit-chdiff.shというファイルを作成し、
chmod +xで実行権限をつけておきます。

ファイルの内容は、以下のコマンドを記述します。

#!/bin/sh
[ $# -eq 7 ] && /usr/bin/env chdiff --wait "$2" "$5"

そして、git configコマンドで、外部diffツールとして関連づけておきます。
ここまでは、差分ツールとしての設定ですね。

   git config --global diff.external /Users/keisukehata/git-chdiff.sh

git mergetoolとして登録するには、Changes.appのメニューで
Install Terminal Utilityを実行し、chdiffをインストールしておきます。
Changes.appは、GUIツールなのでgitからは呼ぶ事ができず、
CUIツールである必要があります。


インストールが終わったら、
.gitconfigにこのように書いておきます。

   [merge]
       tool = chdiff
   [mergetool "chdiff"]
       cmd = /usr/bin/env chdiff --wait "$LOCAL" "$REMOTE"
       keepBackup = false
       trustExitCode = false


とまぁ、ここまで設定していうのもなんですが、
これでgit mergetoolしてmergeしても全然うまく機能してくれないんですよね・・・。
マージを終えてツールを閉じても、BASE,REMOTE,LOCALファイルが残ったまま。。。。



●DiffMerge

こちらから落とす事ができます。
フリーっす。

これは、もともとGitでサポートしているツールなので、
設定は、非常に簡単。

   [merge]
       tool = diffmerge
       keepBackup = false
       trustExitCode = false

残念ながら、文字コードの対応が全然駄目。
なのでこれもメインのマージツールにはなれませんでした。


●Araxis Merge

製品情報
プロ版269ドル(買うならこのエディションが良い)
無料のシリアル(30日間)を発行してもらえるので
試用が可能です。


高価なマージソフトですが、それ故にほぼ理想に近いソフトです。


ただし、マージ画面が3ペインで横なのでちょっとだけ使いづらい。
画面が広くないと幸せになれません。。。


文字コードもかなり対応されているので
困ることはあまりないでしょう。

ダウンロードしたアプリのフォルダに
compare , araxisgitdiff , araxisgitmergeというツールが入っているので、
これを

/usr/local/bin

にコピーして実行権限つけておきます。
あとは、.gitconfigを設定するだけ。
簡単です。

[mergetool "araxis"]
    keepBackup = false
    trustExitCode = false

こちらの情報も参考に。


●p4merge

これぞ本命と言いたくなるマージツール。しかもフリー!!
画面も左右2画面下に結果が表示される理想の形。
こちらからダウンロード。

以下のページがすごくまとまっているのでリンクのみ。
参考ページ


マージは、このツールで決定しました。
文字コードは、UTF8に対応しているので、自分的に
ソースコードのマージができればいいのでOKなのです。



他のマージツール。
xxdiff , k3diff , tkdiff。

色々ありますねぇ・・・。



最後に、マージツールについてまとめてあるサイト