どのように私は、Mercurialはcygwinの下、マージのためにWinMergeのを使用するように設定することができますか?
質問
Mercurialはcygwinの下で実行されると、
は、マージの競合を解決するために WinMergeのの産卵する方法を見つけ出すために少しトリッキーです。私はこれを行うことができますどのように?
解決
トリックは、あなたがWinMergeのに引数として渡す前に、Windowsのパスにcygwinのパスを変換し、小さなスクリプトを必要とするので、cygwinのパスは、Windowsのパスと同じではないということです。
ここでそれを行う方法は次のとおりです。
次のように(1)/usr/bin/winmerge
にシェルスクリプトを作成します。
#!/bin/sh
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3`
注:cygpath
は、パス名に変換します。 WinMergeのは、デフォルトの場所にない場合は、ここにパスを変更します。
(2)そのファイルを実行可能にします。
chmod +x /usr/bin/winmerge
(3)あなたの~/.hgrc
ファイルに次の行を追加します:
[ui]
merge = winmerge
[merge-tools]
winmergeu.executable=/usr/bin/winmerge
winmergeu.args=$other $local $output
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.gui=False
に注意してください!あなたはおそらく既にそれで自分の名前を持つ[UI]セクションを持っています。ちょうど新しい[UI]セクションを追加しないでください、あなたと私の変更をマージすることを忘れないでください。例えば、私の.hgrcは次のようになります:
[ui]
username = Joel Spolsky <spolsky@example.com>
merge = winmergeu
[extensions]
fetch =
[merge-tools]
winmergeu.executable=/usr/bin/winmerge
winmergeu.args=$other $local $output
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.gui=False
他のヒント
ここではSubversion / cygwinの/ WinMergeのために働くシェルスクリプトラインです。主な違いは、使用する引数です。
/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" &
すべてのdiffを一度に起動されるように、この例でも、説明フィールドを設定し、バックグラウンドで比較を起動することに注意してください。あなたはそれを好きではない場合は、削除「&」。
あなたはリビジョン制御プログラムがあなたを渡しているのか分からない場合は、、あなたのシェルスクリプトに「エコーの$ @」を追加してみてください。これは、スクリプトに渡される引数を出力します。
所属していません StackOverflow