2013-12-17 4 views
6

マシンAでは、git mergetoolはBeyond Compare 3を期待通りに実行します。マシンBでは、BC3が起動しますが、実際のマージではなくイントロ画面が表示されるため、コマンドラインで引数が渡されません。Gitは引数なしでmergetoolを起動します

Iは、マシンBに機械Aからの設定をコピーし、そしてgit config --listがインストールパスとpush.default=simpleから離れて同一である。

merge.tool=bc3 
mergetool.bc3='C:/Apps/BeyondCompare3/BCompare.exe' 
mergetool.bc3.cmd='C:/Apps/BeyondCompare3/BCompare.exe' 
mergetool.bc3.path=C:\Apps\BeyondCompare3\bcomp.exe 
push.default=simple 

唯一の他の相違点は、マシンAはwin7の64の下にgit 1.7.11を有していることですマシンB(動作しないマシン)はWin8 32ビット環境下でgit 1.8.4となっています。

ProcessHackerは(まったく同じリポジトリ、ビットのためのビットのための)マシンA上のコマンドラインであることを示しています

"c:\Program Files (x86)\Beyond Compare 3\bcomp.exe" 
     ./somefile.cs.LOCAL.4192.cs 
     ./somefile.cs.REMOTE.4192.cs 
     ./somefile.cs.BASE.4192.cs 
     -mergeoutput=somefile.cs /BCompWnd=$00140644 

壊れたマシンBに、それは単にですが:

c:\Apps\BeyondCompare3\BCompare.exe 

私はここでどんな魔法の呪文を必要としますか?

+1

ツールが異なるフォルダにある間にマシン間で設定が同じになるのはなぜですか? – CharlesB

+0

@CharlesB私が言ったように、設定は "ツールのインストールパスから離れている"と申しますが、それが明確でない場合はごめんなさい。パスは異なり、他はすべて同じです。 –

答えて

4

Gitが(工場出荷時の設定で)すでにbc3ツールについて知っているのであれば、標準引数とともにmergetool.bc3.pathを使用します。そうでない場合、それはmergetool.bc3.cmdを探しますが、この1つはコマンドで示された適切な引数持っている必要があります:あいまいな理由で

mergetool.bc3.cmd="'c:/apps/BeyondCompare3/bcomp.exe' '$LOCAL' '$REMOTE' '$BASE' '$MERGED'" 

を、マシンB Gitの上bc3の呼び出しを知っているし、使用してフォールバックしません。 mergetool.bc3.cmdあなたのケースでは正しい引数を見逃しています。マシンAでは、GitはBC3と対話する方法を知っていて、mergetool.bc3.pathだけを使用してツールの正しい呼び出しを使用します。

マシンAとBのmergetool.bc3.cmdmergetool.bc3.pathのそれぞれについて、この削除を有効にするには、動作がまったく同じである必要があります。

修正するには、mergetool.bc3.cmdの完全な呼び出しを使用してください。

+1

これはうまくいきました。 'cmd'と' path'の両方を削除すると、両方のマシンはBC3を見つけることができないと報告します。 'cmd'を削除して' path'を残すと、両方のマシンが動作します。だからマシンAは元のセットアップで働いていたようだ。なぜならgitは 'mergetool.bc3.cmd'を完全に無視したからだ。ああ、 'mergetool.bc3'自体は不要なようです。ありがとう! –

+0

おそらくマシンAでは '[mergetool" bc3 "]'エントリがありますが、マシンBではありません。両方のマシンで 'git config --global --edit'を実行してみてください。 –

関連する問題