Side by side diffs are much more legible and useful than those in unified format or any other lineardiff. By default, thesvn diffcommand presents output in the unified format, though it has an option,--diff-cmd, which allows you to specify the program that will perform thediff. Passingvimdiffas thediffcommand doesn't work as the options passed bysvn diffare a bit complicated:
Veamos que es así. Escribimos el siguiente programa de prueba:
generaciondecodigos@nereida:~/bin$ cat -n ./foo.pl
     1  #!/usr/bin/perl
     2
     3  print "'$_' " for @ARGV;
     4  print "\n";
Ejecución:
$ svn diff --diff-cmd=/home/generaciondecodigos/bin/foo.pl overloading.tex -rPREV Index: overloading.tex =================================================================== '-u' '-L' 'overloading.tex (revisión: 5112)' '-L' 'overloading.tex (copia de trabajo)' '.svn/tmp/tempfile.tmp' 'overloading.tex'El argumento
-u indica que se debe usar unified format y el 
argumento -L especifica la etiqueta que describe la correspondiente
versión.
Es necesario escribir un wrapper que prescinda de esas opciones y que se quede con los nombres de los dos ficheros:
pp2@nereida:~$ cat -n bin/diffwrap.sh
 1  #!/bin/sh
 2
 3  # Configure your favorite diff program here.
 4  DIFF="/usr/bin/vimdiff"
 5
 6  # Subversion provides the paths we need as the sixth and seventh
 7  # parameters.
 8  LEFT=${6}
 9  RIGHT=${7}
10
11  # Call the diff command (change the following line to make sense for
12  # your merge program).
13  $DIFF $LEFT $RIGHT
14
15  # Return an errorcode of 0 if no differences were detected, 1 if some were.
16  # Any other errorcode will be treated as fatal.
Ahora podemos establecer que este programa sea nuestro comando diff para
svn editando el fichero de configuración ~/.subversion/config:
pp2@nereida:~/Lbook$ grep 'diff' ~/.subversion/config ### Set diff-cmd to the absolute path of your 'diff' program. ### Subversion's internal diff implementation. # diff-cmd = diff_program (diff, gdiff, etc.) ### Set diff3-cmd to the absolute path of your 'diff3' program. ### Subversion's internal diff3 implementation. # diff3-cmd = diff3_program (diff3, gdiff3, etc.) ### Set diff3-has-program-arg to 'true' or 'yes' if your 'diff3' ### program accepts the '--diff-program' option. # diff3-has-program-arg = [true | false] diff-cmd = /home/pp2/bin/diffwrap.sh
Casiano Rodríguez León
