私の実際の差分エンジンを起動しようとして、非常に最小限の設定に調整しましたが、まだ出力がなく、何も起こらない理由を示していません。(SO と Mercurial のサイト (mercurial wiki を含む) で extdiff を検索すると、私が試したすべてのアイデアが得られましたが、おそらくすべてを試したわけではありません。)
bash スクリプトと .bat ファイルを試しました。/cygdrive/e/またはE:/として識別されるE:ドライブの「ルート」にある各スクリプトを試しました。スクリプトへのパスを引用して、または引用せずに試しました。私は組み合わせを使い果たしたと思いますが、何が実行されているか (もしあれば) の兆候をまだ得ていません。直接呼び出された場合、FdbCmp.bat は期待どおりに動作します。$PATH のディレクトリと Windows パス環境変数にあります。
他の提案?それは十分に単純で、「うまくいく」はずです
mercurial.ini に含まれるもの
[extdiff]
hgext.extdiff
cmd.fdiff0 = "e:/Program Files/DbCmp/FdbCmp.bat"
opts.fdiff0 = $root --file $local --file $other
FdbCmp.bat:
@echo off
echo FdbCmp.bat testing
echo FdbCmp.bat args: ::%1:: ::%2:: ::%3 ::%4:: ::%5:: ::%6:: ::%7:: ::%8:: ::%9::
hg showconfig | grep extdiffは、期待される結果を返します (他のいくつかの行の中で)
extdiff.cmd.fdiff0="e:/Program Files/DbCmp/FdbCmp.bat"
extdiff.opts.fdiff0=$root --file $local --file $other
extensions.hgext.extdiff=
hg fdiff0は $? で返されます。= 0 (cygwin bash または CMD.EXE) で、出力は表示されません。私は、FdbCmp.bat ファイルが何かを出力すると予想していました。
hg fdiff0 abc (ファイル a、b、c が存在しない場所) は、次を返します。ファイルが存在せず、Hg がそれを報告しているため、これは予期されたものです。
a: The system cannot find the file specified
b: The system cannot find the file specified
c: The system cannot find the file specified
すべてのファイルが存在するhg fdiff0 file1 file2 file3は、エラーも出力もなしに戻ります。これは予期しないことです。FdbCmp.bat が呼び出され、何かが出力されているはずです。
.bat ファイルだけをテストすると、期待どおりの結果が得られます。
$ FdbCmp.bat moo cow oink pig
FdbCmp.bat testing
FdbCmp.bat args: ::moo:: ::cow:: ::oink ::pig:: :::: :::: :::: :::: ::::
hg -- バージョンは 2.4.6-35ba170c0f82 です