2011-06-15 10 views
7

Quiero usar opendiff como herramienta de diferencias predeterminada para git diff. Esto solía funcionar, pero por alguna razón dejó de funcionar. estoy usando un script:No puedo hacer git diff use opendiff

echo opendiff $2 $5 > opendiff-git.sh 

que se encuentra en .gitconfig:

[diff] 
external = ~/opendiff-git.sh 

Esto dejó de funcionar por mí últimamente. ¿Qué está mal?

Actualización: ¡Cuando cloné un nuevo repositorio todo funcionó bien! ¡Extraño!

+0

¿Se está reportando un error? ¿O simplemente dando un diff incorporado regular? – cxreg

+0

No, no está informando un error al usar git diff. Simplemente imprima el diff en el terminal. También puedo usar opendiff por mi cuenta. – Ida

+0

Tengo exactamente el mismo problema en Mac OS X. Antes, opendiff funcionaba bien incluso sin configurar este script de shell. Después de que dejó de funcionar, agregué el script y las opciones diff.tool y diff.external, pero todavía no funciona. Y no da un error, solo hace una diferencia terminal. ¿Qué puede estar pasando? – Petruza

Respuesta

2

me encontré con esta pregunta mientras yo estaba tratando de establecer opendiff como mi herramienta de combinación git diff &. Lo extraño es que cuando usé el echo opendiff $ 2 $ 5> opendiff-git.sh para crear un script, el script no contenía el argumento place holders $ 2 $ 5 ¡Los agregué manualmente y comenzó a funcionar!

Este comando

echo opendiff $2 $5 > opendiff-git.sh 

resultó en opendiff-git.sh archivo que contiene

opendiff 

añadí los dos marcadores de posición de argumento $ 2 $ 5 manualmente

opendiff $2 $5 

Hecho el ejecutable shell script como lo sugiere knittl

chmod +x ~/opendiff-git.sh 

Y funciona!

+1

Tiene que escapar de '$' en la línea de comandos o del intérprete de comandos para encontrar variables con los nombres '$ 2' y '$ 5', que no existían, por lo que se sustituyeron por una cadena vacía. Intente ejecutar esto en su lugar: echo opendiff \ $ 2 \ $ 5> ~/opendiff-git.sh – petrsnd

2

asegurarse de que su archivo opendiff-git.sh ha establecido sus bits de ejecución:

chmod +x ~/opendiff-git.sh 
+0

Se establecen los bits ejecutables. – Ida

1

Ahora puede especificar una herramienta predeterminada usando git config. Para utilizar FileMerge, es decir opendiff, ejecute:

git config --global diff.tool opendiff 

Si ve el archivo de ~/.gitconfig, ahora debería ver:

[diff] 
    tool = opendiff 

Ahora debería funcionar.

+1

no funciona en _macOS Sierra_ y _git versión 2.10.1 (Apple Git-78) _ – gr4nt3d