linux svn diff beyondcompare

linux - ¿Cómo hago que Subversion use una herramienta diff de terceros?



svn beyondcompare (5)

¡Necesito más que la diferencia predeterminada! Recientemente compré "Beyond Compare" y me gustaría integrarlo con svn, por lo que se inicia cuando escribo:

svn diff foo.c

¿Cómo hago esto?


Desde una publicación en el foro de Beyond Compare :

/ usr / bin / bcompare_svn:

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

La invocación de bcompare es obvia, pero tuve que agregar "exit 0" para que svn abriera más de un archivo a la vez.

Para hacer que svn invoque mi script, agregué la siguiente línea en la sección [helpers] en ~ / .subversion / config

diff-cmd=/usr/bin/bcompare_svn


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

De todos modos ... como Andy ya notó, ejecuta "svn help diff" pero simplemente te da la respuesta ...

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

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


Mira svn --diff-cmd.


Recientemente agregué instrucciones para Subversion en Linux a nuestra página web Uso de 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".


En la última versión de Subversion, 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