どのように私は、Mercurialはcygwinの下、マージのためにWinMergeのを使用するように設定することができますか?

StackOverflow https://stackoverflow.com/questions/548520

質問

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を一度に起動されるように、この例でも、説明フィールドを設定し、バックグラウンドで比較を起動することに注意してください。あなたはそれを好きではない場合は、削除「&」。

あなたはリビジョン制御プログラムがあなたを渡しているのか分からない場合は、

、あなたのシェルスクリプトに「エコーの$ @」を追加してみてください。これは、スクリプトに渡される引数を出力します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top