mac git msysgit git-diff meld difftool

mac - Git Diff y Meld en Windows



git mergetool meld linux (5)

¿Alguien ha hecho que Meld funcione con Git en Windows? Estoy tratando de hacer que funcione y no tengo éxito.

Tengo Meld instalado y cuando lo llamo desde la línea de comandos con dos archivos como parámetros, los diferencia bien y Meld se instala correctamente. Sin embargo, no puedo hacer que funcione con Git (Git Diff). Yo uso la versión git version 1.8.1.msysgit.1 de Git.

He intentado varias cosas: he creado un script de shell, meld.sh :

#!/bin/bash meld.exe "$2" "$5" echo $2 echo $5

y lo usé de Git:

[diff] tool = meld [difftool "meld"] cmd = /"D://meld.sh/"

Intenté agregarlo como un diftool como este:

[diff] tool = meld [difftool "meld"] cmd = /"C://Program Files (x86)//Meld//meld//meld.exe/"

o así:

[diff] tool = meld [difftool "meld"] cmd = ''/"/c/Program Files (x86)/Meld/meld/meld.exe/" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED''

Pero realmente no parece funcionar. También traté de repetir el segundo ($ 2) y el quinto ($ 5) parámetros de mi script de shell y sin salida. También intenté usar un script por lotes de varias maneras:

meld.exe %2 %5

o

meld.exe %~2 %~5

Pero realmente no funciona ... ¿Cómo puedo pasar las dos versiones del archivo que Git usa cuando se difumina con Meld? Es bastante molesto ...


Intenté varias variaciones de intentar establecer la ruta con git config en vano. Como quiero usar Meld desde la ventana de la consola de Git Bash, lo que sí funcionó fue exportar la ruta al directorio de Meld, reiniciar el shell de Bash y lo & behold git difftool --tool-help y git mergetool --tool-help ahora Reconozco a Meld, y puedo elegirlo como mi herramienta preferida.

.perfil

export PATH=/c/Program/ Files/ /(x86/)/Meld/:$PATH

.gitconfig

[merge] tool = meld [diff] tool = meld


O incluso mejor, si estás en un sistema bloqueado donde no está permitido jugar con el camino o simplemente no quieres contaminar el espacio de tu camino, puedes poner el camino completo a Meld.

También prefiero que mi copia de código de trabajo actual se muestre a la izquierda, así que cambié los argumentos $ REMOTE y $ LOCAL. También tenga en cuenta las conversiones de / to / y no para escapar de las comillas dobles.

[diff] tool = meld [difftool "meld"] cmd = /"C:/Program Files (x86)/Meld/meld/meld.exe/" $REMOTE $LOCAL


Otro consejo para los usuarios que invocan diff desde gitk ( haciendo clic con el botón derecho en el elemento del menú contextual "Dif. Externa" ):

Las configuraciones anteriores pueden ser reemplazadas por las preferencias de gitk. En ese caso, cambie las herramientas en el menú de gitk EditarPreferenciasGeneral → Configuración de dif . Externa .


Para Windows 7 (o incluso otras versiones de Windows), agregue estas líneas en el archivo .gitconfig .

[diff] tool = meld [merge] tool = meld [difftool "meld"] path = C:/Program Files (x86)/Meld/meld/meld.exe [mergetool "meld"] path = C:/Program Files (x86)/Meld/meld/meld.exe

Tenga en cuenta que no hay necesidad de usar " para la ruta incluso si incluye espacios. Solo recuerde usar barras diagonales en lugar de barras diagonales hacia atrás.


Por lo general, puede encontrar un ejemplo en Windows similar a este gist, con meld.exe en su PATH ):

git config --global merge.tool meld git config --global mergetool.meld.cmd ''meld.exe /"$BASE/" /"$LOCAL/" /"$REMOTE/" /"$MERGED/"'' git config --global diff.tool meld git config --global difftool.meld.cmd ''meld.exe /"$LOCAL/" /"$REMOTE/"''

Puede encontrar configuraciones más robustas en " Git mergetool with Meld en Windows ", pero la idea sigue siendo la misma.

El OP informa en los comentarios:

Para el difftool , sus comandos escriben las siguientes configuraciones en .gitconfig :

[diff] tool = meld [difftool "meld"] cmd = meld.exe ///"$LOCAL///" ///"$REMOTE///"

Los cambié a

[diff] tool = meld [difftool "meld"] cmd = meld.exe $LOCAL $REMOTE

y todo funcionó bien.