Git lanza mergetool sin ningún argumento

En la máquina A, git mergetool ejecuta Beyond Compare 3 como se esperaba. En la máquina B, BC3 se inicia pero no se pasa ningún argumento en la línea de command, mostrando así la pantalla de introducción en lugar de la combinación real.

Copié la configuration de la máquina A a la máquina B, y git config --list es idéntica aparte de la ruta de installation y 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 

Las únicas otras diferencias son que la máquina A tiene git 1.7.11 en Win7 de 64 bits, mientras que la máquina B (la que no funciona) tiene git 1.8.4 en Win8 de 32 bits.

ProcessHacker muestra que la línea de command en la máquina A (para el mismo repository, bit a bit) es:

 "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 

mientras que en la máquina rota B es simplemente:

 c:\Apps\BeyondCompare3\BCompare.exe 

¿Qué hechizo mágico necesito aquí?

Solo una suposition: si Git ya (en su configuration de fábrica) conoce la herramienta bc3, usará mergetool.bc3.path junto con arguments estándar. Si no, busca mergetool.bc3.cmd , pero este necesita tener los arguments correctos indicados en el command:

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

Por un motivo oscuro, en la máquina B, Git no conoce la invocación de bc3 , y recurre a mergetool.bc3.cmd que en su caso mergetool.bc3.cmd los arguments correctos. En la máquina A, Git sabe cómo hablar con BC3 y utilizará la invocación correcta de la herramienta, utilizando solo mergetool.bc3.path .

Para validar esta eliminación respectivamente mergetool.bc3.cmd y mergetool.bc3.path en la máquina A y B, los comportamientos deberían ser exactamente los mismos que usted observa.

Para solucionarlo, use la invocación completa en mergetool.bc3.cmd .