2008-09-26 11 views
52

¿Hay alguna forma de enumerar todos los archivos que han cambiado entre dos etiquetas en CVS?CVS: enumera todos los archivos modificados entre etiquetas (o fechas)

Cada vez que hacemos un lanzamiento aplicamos una etiqueta a todos los archivos en esa versión. Quiero encontrar todos los archivos que cambiaron entre lanzamientos.

También funcionaría si pudiera encontrar todos los archivos que habían cambiado entre dos fechas.

Respuesta

31

supongo que este comando ayudaría:

cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs 

donde RELEASE_1_0 y RELEASE_1_1 son los nombres de las etiquetas.

Usted puede encontrar un poco más de información sobre cvs comando diff here

además de que debe ser bastante simple para crear una secuencia de comandos para que informe más suitbable para sus necesidades, por ejemplo: número de archivos ha cambiado, creada elimina etc. Por lo que yo sé, las herramientas de interfaz gráfica de usuario de cvs más comunes (wincvs y tortugas) no proporcionan algo así de inmediato.

creo que sirve ;)

+2

Hay un script en perl llamado cvs2cl que puede producir buenas versiones formateadas de los registros, ya sea como el informe final o como texto o XML para post-proceso: http://www.red-bean.com/cvs2cl/ –

+0

Acabo de encontrar esto a través de Google y me ahorró un montón de trabajo, ¡muchas gracias! Estaba tratando de averiguar a través del comando 'history', me olvidé de la diferencia. –

+0

'-N' da error en una máquina con Windows:' cvs [servidor cancelado]: No se puede usar el nombre de archivo reservado 'nul' en máquinas basadas en NT' –

4

método de DLira da un montón de detalles, incluyendo todos los cambios.

para obtener sólo una lista de archivos, esto funciona:

cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 | grep "Index:" > diffs 
+0

lo siento, me olvidé de comentar sobre la verbosidad y cómo obtener justo lo que desea. ¡Pero tienes razón! grep es una gran manera de obtener solo lo que necesita. ;) –

1

La mejor herramienta que he encontrado para esto es un script en perl llamado cvs2cl.pl. Esto puede generar una lista de cambios en varios formatos diferentes. Tiene muchas opciones diferentes, pero he utilizado las opciones de etiqueta a etiqueta de la siguiente manera:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8 

o

cvs2cl.pl --delta dev_release_1_2_3:HEAD 

También he hecho comparaciones utilizando fechas con la misma herramienta.

23

Yo prefiero usar rdiff y -s opción

cvs rdiff -s -r RELEASE_1_0 -r RELEASE_1_1 module > diffs 

rdiff no requiere una caja de arena; -s le da un resumen de los cambios.

+0

Probé la mayoría de las otras opciones aquí, y con los demás no pude ver todos los cambios. ¡Gracias! – Victor

+0

Este es bueno. 'cvs rdiff -s -rvxxxxx -rHEAD módulo 2>/dev/null' Da un resumen "Archivo (cambiado de | es nuevo) ...." – gaoithe

11

Para obtener una lista de los archivos que han cambiado entre una versión y otra utilizando los cvs comandos estándar:

cvs -q log -NSR -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt 

O, alternativamente, para obtener una lista de cometer los comentarios simplemente dejar caer el -R:

cvs -q log -NS -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt 

Donde reemplaza V-1-0-69 y V-1-0-70 con las revisiones que está comparando.

+0

El último comando era lo que estaba buscando :) Simplemente agregué un poca grep para filtrar las líneas que no quiero: grep -vE "^ branch |^RCS |^head |^bloqueos |^access |^keyword |^total |^descripción |^revisión" – gregers

+0

Esto es bueno para el archivo cambios. Las mismas banderas funcionan con cvs rlog. Puede usar 'cvs -q log -NS -rvxxxx ::' para mostrar los cambios desde la última etiqueta que es útil. Para los archivos que se agregan después de la etiqueta se obtiene una "advertencia: sin revisión" y no se muestran los cvs agregar o confirmar comentarios. – gaoithe

7
cvs log -d ">=DATE" -N -S -R > cvs.log 
+1

** Ejemplo **: 'cvs -q log -NSRd"> = 2013-10-20 "'. Quite 'R' si también quiere los resúmenes de compromiso. –

Cuestiones relacionadas