いつもはAraxis Mergeを使っているが諸事情(ライセンス都合)につきWinmergeでセットアップしてみた。
Araxis Mergeを設定したときの記憶によると、1.6.4以降で微妙に書き方が異なる。とはいえ以前の書き方でも動いていた気がするが。
参考: http://www.araxis.com/merge/scm_integration.html#msysGit
WinMergeのインストール
http://winmerge.org/からダウンロードしてインストール。
WinMerge 2.12.4をいれたが、サイトやヘルプをみてもgitについての設定は載っていない。軽くググるとgitからのコマンドラインに対応していないので別途スクリプトをつくって変換してあげないといけないようだ。
git用のスクリプト作成
どこでもいいが$HOME/
につくることにする。Vista以降ならC:\Users\makoto_kw
になる。
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub -dl "Base" -dr "Mine" "$1" "$2"
参考: http://stackoverflow.com/questions/1881594/use-winmerge-inside-of-git-to-file-diff
gitの設定
gitの設定はHOMEフォルダの.gitconfig
に保存される。git config
コマンドで設定もできるが"
が入るとややこしいので$HOME/.gitconfig
を直接編集する。
[[diff]]
tool = winmerge
[difftool "winmerge"]
cmd ="WinMergeGitDiff.sh \"$LOCAL\" \"$REMOTE\""
この書き方(difftool/mergetool)はgit 1.6.4以上で使える方法になる
実行
git difftool -y
にてwinmergeで起動できる。ファイルの度にtoolを開くか聞いてきて対話が面倒なので-yをつける。複数のツールを.gitconfigに書いておいてgit difftool -y -t winmerge
というように明示的にツールを指定にするなども可能。
-y(--no-prompt)
の指定が面倒であればpromptのデフォルトをオフにしてもいい。
git config --replace --global difftool.prompt false
設定でpromptをオフにした場合に、明示的に有効にするには--prompt
を付ける。
git difftool --prompt
参考: http://www.kernel.org/pub/software/scm/git/docs/git-difftool.html
なお、mergetoolはちゃんとためしていない。