成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

Gitのdiffツールとマージツールを設定する(p4merge)Mac

Gitのデフォルトの設定で、diffを見ると
パッチの形式で表示される為、
ぶっちゃけ人間が見ると見づらいんですよ、、、
(慣れろ、俺。とは思うけども。

% git diff
diff --git a/src/collection/set_and_map/MapSamples.scala b/src/collection/set_and_map/MapSamples.scala
index d03a3db..d39ea38 100644
--- a/src/collection/set_and_map/MapSamples.scala
+++ b/src/collection/set_and_map/MapSamples.scala
@@ -10,7 +10,7 @@ object MapSamples {
        println(map("hoge"))
        // println(map("foo")) // java.util.NoSuchElementException
        
-       println(count("Hoge hoge doo. I am Buzz! bar bar"))
+       println(count("Hoge hoge doo. I am Buzz! bar bar buzz"))
   }
   def count(text: String) = {
     val counts = mutable.Map.empty[String, Int]

(サンプルなので、ソースコードは気にしないでください)

  • これをGUIを使って、わかりやすく表示させたい
  • ついでにマージもGUIでやりたい(コンフリクトが複雑だったり、多かったりすると気が滅入るので)

そこで、今回は、
「Perforce Visual Merge and Diff Tools」の
「P4Merge」を使って、設定してみたいと思います。


ーー環境
OS : Mac OSX 10.7.2 Lion
git : 1.7.4.1
p4merge: 2011.1/373947

ーー参考サイト
Mac用gitマージ,diffツール p4mergeのインストール - 今日もコーディング日和
git のマージツールを設定する - XANADU - the infinity code...



1.p4mergeのダウンロード
Perforce Visual Merge and Diff Tools | Perforce
まずはこちらにアクセスして、DLする。




2.p4mergeインストール
ダウンロードされた「P4V.dmg」をダブルクリックして、インストールする。

3.p4mergeとp4diffのコマンド作成
私は「/usr/local/bin」に作成しました。
※PATHが通っている場所ならどこでも構いません。
■p4mergeコマンド

/usr/local/bin% sudo emacs p4merge
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
${P4MERGE} $*

■p4diffコマンド

/usr/local/bin% sudo emacs p4diff
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
[ $# -eq 7 ] && ${P4MERGE} "$2" "$5"

■作成したコマンドの実行権限を変えておく

/usr/local/bin% sudo chmod 777 p4*
Password:
/usr/local/bin% ll p4*            
-rwxrwxrwx  1 root  admin  105 12 10 01:30 p4diff
-rwxrwxrwx  1 root  admin   82 12 10 01:30 p4merge
/usr/local/bin%

4.gitの設定
「~/.gitconfig」に以下の設定を追加

[merge]
    keepBackup = false;
    tool = p4merge
[mergetool "p4merge"]
    cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    external = p4diff


これで準備完了です。
早速試してみますか!

% git diff 

おぉ〜見やすい!
どこが変更されたのか一目瞭然ですね。

では、マージの方法

% git merge hoge

でコンフリクトが発生しました、という状況で。

% git mergetool -y

とすると、マージツールが起動します。
スクリーンショットは割愛します。

詳しくは、参考サイトを御覧ください。

以上、結構使いやすかったので、みなさんオススメです。