2012-02-08 15 views
35

Necesito obtener la lista de archivos modificados entre dos revisiones en SVN.Obtener archivos modificados de la línea de comandos SVN entre dos revisiones

He utilizado el siguiente comando:

svn diff -r 5001:6001 --summarize https://svn.blah.com/../ > output.txt 

Por alguna razón, los archivos modificados en la revisión de 5001 no se rellenan en el archivo de texto de salida.

¿Cuál es exactamente el comando para extraer la lista de archivos entre las dos revisiones (incluyendo desde y hacia las revisiones, es decir, incluyendo la revisión de 5001 y la revisión 6001)?

+1

¿Usted intentó '-r 5000: 6001'? –

+0

Sí, lo he intentado -r 5000: 6001 incluye los archivos modificados en r 5001 pero no 5000 ... ¿Esto significa que siempre tengo que disminuir en un número de revisión – Madhan

+0

Sí. Esa es la forma en que funciona. –

Respuesta

52

Trate svn diff -r 5000:6001 lugar. Para entender esto, considere lo siguiente: ¿cómo sería la salida de svn diff -r 100:100? No mostraría ningún cambio, porque las revisiones son las mismas. Para ver los cambios para la revisión 100, debemos usar -r 99:100.

+1

cuando probé svn diff -r 100: 100 La salida es nula – Madhan

+6

Derecha - como no hay diferencia entre 100 y 100 - son idénticas. Por definición. Por lo tanto, si desea saber la diferencia en su 5001: 6001 inclusive de 5001, debe hacer una -r 5000: 6001. –

8

Trate svn log -r 5000:6001 -v para obtener la lista de archivos. Esto proporciona una lista de archivos categorizados por la revisión no. Entonces, uno puede tener una mejor idea de qué archivos fueron en qué revisión de un vistazo. respuesta

+0

Necesitaba una lista de los archivos que habían cambiado entre dos revisiones arbitrarias y esto funcionó para mí, mientras que la sugerencia de diff -r, con --summarize o no enumeró todos los archivos en el repositorio. Tal vez me estoy perdiendo algo? –

+0

Tenga cuidado con el resultado cuando hay revisiones provenientes de fusiones. Experimenta un problema hoy en el que el resultado se parecía a /branch/abc/new_file.js (desde trunk/new_file.js: 12344). En mi experiencia, siempre es mejor usar --xml si planea consumir esta información como la entrada de otra cosa. – MattSaw

8

Dirk-Willem van de Gulik es perfecto si desea que todos los cambios. Sin embargo, si sólo desea que la lista de archivos cambió anexar --summarize cambio a su comando,

svn diff -r 13447:HEAD 
6

svn diff -r v1:v2 --summarize | awk '{print $2}' > filelist.txt

Explicación:

svn diff -r v1:v2 --summarize que proporciona el estado y el nombre del archivo por separado un caracter de tabulación Debe seleccionar la cadena después del carácter de tabulación, el segundo campo. Puede hacer que el uso de awk y redirigir la salida a filelist.txt

-1
svn diff -r 5001:6001 ...local path hier ... > output.txt 
+1

¿Puede agregar alguna explicación de por qué esto resuelve el problema del usuario? – Chrismas007

Cuestiones relacionadas