WinMerge a través de git difftool sigue pidiendo el segundo file

Utilicé las excelentes instrucciones de @VonC para configurar mi sistema de desarrollo de modo que git difftool <BRANCH1> <BRANCH1> invocará a WinMerge. Aquí esta lo que hice:

  1. Colocado lo siguiente en ~/.gitconfig :

    [diff]

     tool = winmerge 

    [difftool "winmerge"]

     cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\" 

    [difftool]

     prompt = false 
  2. Creado un /usr/bin/winmerge.sh con el siguiente contenido:

    echo Launching WinMergeU.exe: $1 $2

    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

Ahora, cuando bash lanzar WinMerge a través de git difftool <BRANCH1> <BRANCH1> , recibo lo que parece ser el correcto paso de parameters:

Launching WinMergeU.exe: /tmp/21qMVb_file1.c /tmp/1ACqik_file1.c

Pero, por alguna extraña razón, en lugar de que WinMerge muestre los dos files uno al lado del otro, solicita ingresar el primer file como el lado derecho, y el segundo file se acepta como el lado izquierdo:

[WinMerge debería mostrar 2 archivos, no uno

¿Por qué está pasando esto? ¿Qué extrañé en los pasos de configuration?

PD Cuando winmerge.sh file1.c file2.c en la línea de command winmerge.sh file1.c file2.c , WinMerge muestra inmediatamente los dos files uno al lado del otro, tal como lo esperaría.

ACTUALIZACIÓN: Oh wow, me acabo de dar count de que Both paths are invalid post Both paths are invalid en la parte inferior de la request de WinMerge (y actualizó la captura de pantalla para enfatizar eso). Parece que estos files simplemente no fueron generados por difftool o algo está mal con la ruta.

¡Resolví el problema!

La solución está en la pista que proporciona la respuesta de @ pydave en el mismo hilo . Todo lo que tuve que hacer fue replace "$1" "$2" (en winmerge.sh) con cygpath -w $1 cygpath -w $2 .

Funciona muy bien ahora. Justo como lo esperaría.