2008-11-12 14 views
17

¡Necesito más que la diferencia predeterminada! Recientemente he comprado "que no tiene comparación" y me gustaría integrarlo con SVN, por lo que su marcha al escribir:¿Cómo hago para que Subversion use una herramienta diff de terceros?

svn diff foo.c

¿Cómo se hace esto?

+1

La pregunta original se menciona Linux. Eso probablemente debería haber quedado en el título de la pregunta. –

Respuesta

23

Desde un Beyond Compare forum post:

/usr/bin/bcompare_svn:

#!/bin/bash 
/usr/bin/bcompare $6 $7 & 
exit 0 

La invocación de bcompare es obvio, pero he tenido que añadir "exit 0" para que SVN abriría más de un archivo a la vez

Para hacer SVN invocar mi guión, he añadido la línea siguiente en la sección [asistentes] en ~/.subversion/config

diff-cmd=/usr/bin/bcompare_svn 
11

Mira svn --diff-cmd.

+1

con --diff-cmd svn client (el mío es 1.6.6) aún genera -L opciones para el comando especificado, como en -L "archivo1 (rev. Xyz)" -L "archivo2 (rev abc)" Por lo tanto, a menos que su diff cmd está bien con esos, está roto. Chris tiene una buena solución en su página Beyond Compare, que implica la creación de un script de iniciador. – greggo

8

Me gustaría añadir un comentario a la respuesta de Andy Lester pero no tiene una reputación lo suficientemente grande Sin embargo, puedo responder la pregunta, supongo.

De todas formas ... como Andy ya se ha señalado plazo "svn diff ayuda", sino simplemente darle la respuesta ...

svn diff --diff-cmd < diff-cmd > --extensions < Diff- opciones cmd >

svn diff --diff-cmd/usr/bin/--extensions diff "-bca" < nombre de archivo (s) >

4

recientemente he añadido instrucciones para la subversión en Linux a nuestra página web Using Beyond Compare With Version Control Systems . Una vez que siga los pasos en el enlace anterior, debería ejecutar Beyond Compare 3 para Linux cuando ejecute "svn diff".

+0

Nota, necesita la versión pro para que esto funcione. –

+0

Sí, eso resolvió mis problemas :-), gracias – Abdullah

4

En última subversión, el script/usr/bin/bcompare_svn debería ser así:

#!/bin/bash 
cp $6 $6.save 
cp $7 $7.save 
{ 
    /usr/bin/bcompare $6.save $7.save 
    rm $6.save $7.save 
} & 
exit 0 

o (código no probado)

#!/bin/bash 
base=`echo $3 | sed -r "s/^([^\(]+)[ \t]+\((.+)\)$/\1.\2/g" | xargs -i% basename "%"` 
current=`echo $5 | sed -r "s/^([^\(]+)[ \t]\((.+)\)$/\1.\2/g" | xargs -i% basename "%"` 

mv "$6" "/tmp/$base" 
mv "$7" "/tmp/$current" 
{ 
    /usr/local/bcompare/bin/bcompare "/tmp/$base" "/tmp/$current" 
    rm "/tmp/$base" "/tmp/$current" 
} & 
exit 0 
+1

Probé el segundo código: funciona ... ¡genial! +1 – ezdazuzena

Cuestiones relacionadas