2008-08-26 10 views
8

Existe un repositorio de CVS heredado, que contiene una gran cantidad de directorios, subdirectorios y rutas. También hay una gran cantidad de ramas y etiquetas que no necesariamente cubren todos los archivos de rutas &, generalmente un subconjunto. ¿Cómo puedo averiguar qué ramas/etiquetas cubren, qué archivos y rutas?¿Cómo saber qué etiquetas de CVS cubren qué archivos y rutas?

CVS log ya proporciona la lista de etiquetas por archivo. La tarea requiere que transponga esto en archivos por etiqueta. No pude encontrar esa funcionalidad en la implementación actual de WinCVS (CVSNT). Dados los amplios ciclos vacíos, puedo escribir un script Perl que haría eso, el algoritmo no es complejo, pero debe hacerse.

Me imagino que hay algunas personas que necesitaban tal información y resolvieron este problema. Por lo tanto, creo que debería ser una herramienta disponible (de código abierto/gratis) para esto.

Respuesta

7

para determinar qué etiquetas se aplican a un uso determinado archivo:

cvs log <filename> 

Esta es la salida de todas las versiones del archivo y lo que las etiquetas se han aplicado a la versión.

Para determinar qué archivos están incluidos en una sola etiqueta, lo único que se me ocurre es verificar usando la etiqueta y ver qué archivos regresan. El comando para eso es cualquiera de:

cvs update -r <tagname> 
cvs co <modulename> -r <tagname> 
cvs export <modulename> -r <tagname> 
0

No conozco ninguna herramienta que pueda ayudarte, pero si escribes la tuya, puedo salvarte de una jaqueca: los directorios en CVS no pueden ser tagget. Solo los archivos dentro de ellos tienen etiquetas (y eso es lo que determina lo que está desprotegido cuando revisas un directorio en una etiqueta específica).

2

No tiene que hacer un pago real. Puede utilizar la opción -n sólo para simular esto:

cvs -n co -rTagName ModuleName 

Esto le dará los nombres de todos los archivos etiquetados TagName en ModuleName módulo.

+0

No se pudo hacer que esto funcione. cvs devuelto: no hay ninguna versión aquí; Ejecute 'cvs checkout' primero –

+0

@Joseph: debe especificar un CVSROOT ya sea a través de la variable de entorno o utilizando el argumento '-d'.De lo contrario, CVS no sabe qué repositorio consultar. –

+0

Gracias por la respuesta. No estaba seguro de haber agregado eso, pero lo intenté de nuevo con el -d y una ruta a un repositorio de cvs y recibí el mismo mensaje. Estoy ejecutando la versión 1.1.22 de cvs. Curiosamente, sin embargo, si doy una etiqueta que no existe, me dice que la etiqueta no existe. –

1

El siguiente comando proporciona una lista de archivos que están en esa etiqueta "yourTagName". Todos los archivos están marcados como nuevos, la información de revisión en "yourTagName".

Este comando hace una diferencia entre 2000-01-01 y su etiqueta, puede usar otra fecha anterior.

cvs -q rdiff -s -D 2000-01-01 -r yourTagName 
11

lista Para etiquetas en un archivo también se puede hacer:

cvs status -v <file> 
4

el método citado anteriormente no funcionó para mí

cvs -q -s rdiff D 2000-01 -01 -r yourTagName

sin embargo después de un montón de andar por ahí me he dado cuenta de que

cvs -q -s rdiff -D 2000-01- 01 -r suTagName ModuleName

funciona

Cuestiones relacionadas