2012-06-20 32 views
5

Quiero usar meld para ver la diferencia entre las revisiones. He instalado funden y luego ejecutado en el directorio del proyecto:No se puede svn diff usando meld

svn diff -r 2165:2182 --diff-cmd meld 

pero thows hasta el siguiente error:

Index: app/models/college_friends_count.rb 
=================================================================== 
svn: E200012: Process 'meld' failed (exitwhy 2) 

¿Puede alguien decirme lo que está mal aquí?

+0

intente ejecutar funden en dos archivos arbitrarios. ¿Funciona? –

+1

sí ... está funcionando ... también si cambio contenido en algunos archivos sin confirmarlo, meld muestra las diferencias al ejecutar "meld.". Pero comparar diferentes revisiones no funciona –

+0

SVN pasa a la herramienta diff no solo 2 rutas para comparar sino también otras opciones como etiquetas (puede ver todas las opciones pasando a --cmd un script que imprime su línea de comandos). Quizás Meld no acepte esas opciones adicionales. Sé poco sobre meld, solo una idea. –

Respuesta

5

Creo que E200012 significa que el proceso subyacente (meld) sale con un código de salida distinto de cero. Muchas herramientas de diferencia hacen esto para indicar el resultado de la operación de diferencia (0 = sin diferencia 1 = diferencias, etc.).

Aunque mi versión de meld no parece usar códigos de salida distintos de cero, sé que colordiff lo hace, lo que detiene SVN durante el rastreo de directorios "svn diff", como en el ejemplo anterior. Pruébelo en un archivo que no tenga ningún cambio para probar.

Una buena solución es hacer su propio comando diff, digamos que se llama meld_svn:

#!/bin/bash 
meld "$6" "$7" 
exit 0 

Así que lo que estamos haciendo es ignorar los códigos de salida de MELD, y salir con la nuestra (que ganó no dejes de SVN). Las comillas en torno a los argumentos significan que los nombres de archivos con espacios en ellos no romperán su secuencia de comandos.

Hágalo ejecutable, luego edite su ~/.subversion/config y configure el diff-cmd en "meld_svn". Esto funciona muy bien para colordiff, debería solucionar su problema con meld si de hecho sale con códigos de salida distintos de cero.

Espero que ayude.

4

Para mí, el problema es que, por defecto, svn pasa -u como una opción al comando diff externo, y meld no espera o ese indicador.

La bandera de -xsvn-diff le permite anular esta bandera por defecto:

svn diff -x \"\" --diff-cmd meld 

Esto reemplaza -u con "" en la línea de comandos tanteos, se requiere que los escapes para que el shell no analiza el CITA marca la primera vez y en su lugar los pasa a SVN, que lo pasa a la línea de comando de fusión.

(por cierto, el uso de echo como el diff-cmd le permite inspeccionar fácilmente lo SVN enviaría a fusionar)

+0

Ver [esta respuesta] (http: // stackoverflow.com/a/7418087/420867) para otro enfoque que también permite fusionar para hacer fusiones. – drevicko

Cuestiones relacionadas