Beyond Compare をマージ プログラムとして使用するための推奨 Mercurial 設定は次のようになります。
[merge-tools]
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp.exe
bcomp.args = $local $other $base $output
bcomp.priority = 1
bcomp.premerge = True
bcomp.gui = True
[ui]
merge = bcomp
Mercurial docs on merge toolsによると、デフォルトのbinary
オプションがありFalse
ます。 の場合binary=True
、ツールがバイナリ ファイルをマージできることを Mercurial に通知します。 しかし、このオプションをオンにしても、Mercurial は依然として Beyond Compare に XML ファイルをマージさせません。
もう少し調査すると、premerge
オプションが見つかります。 の場合premerge=True
、Mercurial は最初に内部的にマージし、解決すべき競合がある場合にのみマージ ツールを使用します。 残念ながら、Mercurial は常にバイナリ ファイルのマージに失敗します。事前マージが失敗すると、Mercurial はそのファイルのマージを停止し、マージ ツールを起動しません。
premerge
解決策は、オプションを に設定することでもあるようFalse
です。残念ながら、90% の確率で競合がなく、マージ ツールが表示されないため、事前マージは非常に役立ちます。premerge を に設定するとFalse
、マージが必要になるたびに Beyond Compare が開きます。これは非常に面倒です。
これを解決するために、バイナリ ファイルのマージに使用される 2 つ目の Beyond Compare マージ ツール構成を作成しました。デフォルトのツールより優先度を低く設定したbcomp
ので、メインbcomp
ツールが失敗した場合にのみ呼び出されます。これは通常、バイナリ ファイルのみです。merge-tools
これらの行をmercurial.ini ファイルのセクションに追加しました:
bcompbin.executable = C:\Program Files (x86)\Beyond Compare 3\BCompare.exe
bcompbin.args = $local $other $base $output
bcompbin.gui = True
bcompbin.premerge = False
bcompbin.binary = True
これの副作用の 1 つは、Beyond Compare が処理できないバイナリ ファイルをマージするために起動することです。私はまだそのような状況に遭遇したことがないので、対処方法がわかりません。bcompbin
おそらく、マージ ツールを一時的にコメント アウトするだけです。