WindowsのGit(msysgit)環境で、秀丸エディタ、Winmergeを使う設定
普段、Windows環境で使っているエディタは秀丸で、差分ツールはWinmergeだ。
Windowsなら、よくある環境だろう。
エディタに秀丸、外部差分ツールと外部マージツールにWinmergeの設定をする。
Gitのdiff・mergeをgitconfigだけでWinMergeにする
このサイトを見る限り、Gitの外部差分ツールと外部マージツールの指定には、シェルスクリプトを指定する必要はないようだ。
このサイトを真似て、WinMergeの設定をしてみた。
設定
%userprofile%\.gitconfig に以下を設定
[core] editor = 'C:/Program Files (x86)/Hidemaru/Hidemaru.exe' //fu8 [merge] tool = WinMerge [mergetool "WinMerge"] path = C:/Program Files/WinMerge/WinMergeU.exe cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" \"$MERGED\" [diff] tool = WinMerge guitool = WinMerge [difftool "WinMerge"] path = C:/Program Files/WinMerge/WinMergeU.exe cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -ub -dl \"Theirs Files\" -dr \"Mine Files\" \"$REMOTE\" \"$LOCAL\"
参照先のサイトの設定のままだと、MergeToolが正しく動作しなかったので修正した。(上記の設定は修正してある。)
訂正
diff側に余計な \が混じってたので削除
動かなかった現象と修正内容。
MergeToolが動かない
オプションの区切り文字の確認
diffとmergeでオプションの指定が異なる。 / なのか -なのか?
パラメータは、スラッシュ( / ) か、ダッシュ ( - ) 文字が 前に付加されます。パス名にはプリフィックス文字を付加しません。
→どちらでもいいようだ。
-mってなんだ?
WinMerge[U] [/r] [/e] [/f filter] [/x] [/xq] [/s] [/ul] [/ur] [/um] [/u] [/wl] [/wr] [/wm] [/minimize] [/maximize] [/dl leftdesc] [/dr rightdesc] leftpath [middlepath] rightpath [/o outputpath]
→そんなオプションない
-rってなんだ?
/r すべてのサブフォルダ内のすべてのファイルを比較します(再帰比較)。 ユニークフォルダ (片方のみ存在するフォルダ)は、分離された項目として 比較結果内にリストされます。 サブフォルダまで含めるとかなり比較時間が 増大してしまうことに注意してください。 このパラメータを指定しなかった場合、 WinMergeは比較するフォルダ内のファイルとトップレベルのサブフォルダのみ リストします。 サブフォルダの中までは比較しません。
→期待してる動きと違う気がする
修正して試すその1
設定
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -dl \"local\" -dm \"base\" -dr \"remote\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
起動
マージ先(ローカルリポジトリ、もしくは、ブランチ)、分岐元、マージ元(リモートリポジトリ、もしくは、ブランチ)で
表示される。
- Mergeツールが起動するとファイルが4つできる
$ ls -1 memo.txt memo.txt.BACKUP.15692.txt memo.txt.BASE.15692.txt memo.txt.LOCAL.15692.txt memo.txt.REMOTE.15692.txt
保存
- memo.txt
1 2 <<<<<<< HEAD さーん 4 5 ろーく ======= Fizz 4 Buzz 6 >>>>>>> dev 7 8 きゅーう 10
マージした内容は、memo.txt.LOCAL.15692.txtに保存されて、memo.txtには反映されない。
修正して試す その2
設定
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" \"$MERGED\"
起動
$ git mergetool -t WinMerge Merging: memo.txt Normal merge conflict for 'memo.txt': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (WinMerge):
保存
1 2 さーん 4 5 ろーく 7 8 きゅーう 10
memo.txtに直接反映される。
こっちの方がよさそうだ。
環境
関連
msysgitのGit Bashでも使える便利な5つのBashの補完機能
ここ間違ってるよ
こうした方がよくないか?
などなど
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いします。