secuencia de commands para generar diffs entre confirmaciones consecutivas y escribirlas en el file

Para ver cambios o diferencias entre commits, uso lo siguiente desde la línea de command:

svn diff -r 3000:3025 > daychanges.diff 

Quiero modificar el command para que genere diffs entre sucesivos commits, los concatene y produzca en el file, algo así como

 svn diff -r 3000:3001 > daychanges.diff svn diff -r 3001:3002 >> daychanges.diff svn diff -r 3002:3003 >> daychanges.diff ... svn diff -r 3019:3020 >> daychanges.diff 

¿Cómo puedo escribir una secuencia de commands?

Puedes escribir for loops en bash:

http://www.cyberciti.biz/tips/how-to-generating-print-range-sequence-of-numbers.html

Dado eso, no debería ser tan difícil escribir un script que llame a svn diff en un range de commits.

En un solo command de línea, eso podría ejecutarse desde la CLI:

 for ((start=3000,finish=3001; finish<=3025; start++,finish++)); do svn diff -r $start:$finish; done > out.file 

o si lo prefiere, la versión más corta,

 for ((i=3000; i<3025; i++)); do svn diff -r $i:$(($i + 1)); done > out.file 

En una secuencia de commands de varias líneas:

 #!/bin/bash $begin=$1 $end=$2 $outfile=$3 for ((start=$begin,finish=$begin+1; finish <= $end; start++,finish++)) do svn diff -r $start:$finish done > $outfile 

(Omita el > $outfile si solo desea dirigir manualmente el resultado del script).

Debería ser algo así como:

diffs.sh :

 #!/bin/bash first=$(($1 + 1)) last=${2} for a in `seq $first $last`; do svn diff -r $(($a - 1)):$a done > daychanges.diff 

entonces:

 ./diffs.sh 3000 3020 

Este script analizará la salida 'svn log' para los numbers de confirmación y diferirá todo el shebang (perdón por el juego de palabras) … si quiere limitar el suministro del range de confirmación que en un argumento, por ejemplo, "-r88833: HEAD" … No hay espacios:

 #!/bin/bash unset last; for r in `svn log $1|grep '^r'|awk '{print$1}'|sed -e 's/r//g'|sort`;do if [ ! -v last ]; then last=$r; continue; fi; echo ------------------------; echo diff $last:$r ; echo ------------------------; svn diff -r$last:$r;last=$r; done>diffs