2011-05-30 8 views
14

¿Hay comandos de la CLI que se pueden utilizar para obtener una lista de las etiquetas que se han creado en una rama o la cabeza de un módulo dentro de un plazo determinado?¿Cómo obtener una lista de etiquetas creadas en el repositorio de CVS?

Lo que necesito es una breve lista de las etiquetas y la fecha en que fueron creados. Teniendo en cuenta los siguientes parámetros

  1. Nombre del módulo
  2. nombre de la sucursal (o :: HEAD)
  3. Fecha de Inicio
  4. fecha de finalización

Respuesta

11

Uno etiquetas lista puede o ramas presentes en un módulo usando el siguiente comando. Esto es algo recogido de another answer at SO

Para una lista de todas las etiquetas:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)!=0{print $1}' | sort -u 

a la lista de todas las ramas:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u 

Este utiliza los números de la rama de magia para identificar es un enlace simbólico es una rama o una etiqueta

Como skaffman mencionado en una de las respuestas en esta página, no es posible determinar la fecha cuando se crea la etiqueta. Lo mejor que se puede hacer es identificar una fecha aproximada considerando la fecha más reciente enumerada en los registros para esa etiqueta.

Algo como esto:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -N -S -r*TagName* *Module* | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //' 

Este es un script bash que trabajé hacia fuera para dar la lista de todas las etiquetas con su aprox. fecha de creación

#!/bin/bash 

CVSROOT=$1 
PROTOCOL=$2 
LOGIN=$3 
PASSWORD=$4 
MODULE=$5 
REVISION=$6 
OUTPUT=$7 

CVS_HOST="" 
if test "${PASSWORD:-t}" != "t" ; then 
    CVS_HOST=":${PROTOCOL}:${LOGIN}:${PASSWORD}@${CVSROOT}" 
else 
    CVS_HOST=":${PROTOCOL}:${LOGIN}@${CVSROOT}" 
fi 

CVS_REVISION="" 
if test "${REVISION:-t}" != "t" ; then 
    CVS_REVISION="-r${REVISION}" 
fi 

echo "\"Tag Name\",\"Create Date\"" > ${OUTPUT} 

echo "EXEC: cvs -Q -d ${CVS_HOST} rlog -h -S ${CVS_REVISION} ${MODULE} | awk -F"[.:]" '/^\t/&&\$(NF-1)!=0{print \$1}' | sort -u" 
cvs -Q -d ${CVS_HOST} rlog -h ${CVS_REVISION} ${MODULE} | awk -F"[.:]" '/^\t/&&\$(NF-1)!=0{print $1}' | sort -u | while read tagName 
do 
    #get approx create date 
    echo "EXEC: cvs -Q -d ${CVS_HOST} rlog -N -S -r$tagName ${MODULE} | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //'" 
    date=`cvs -Q -d ${CVS_HOST} rlog -N -S -r$tagName ${MODULE} | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //'` 

    #Save to output file 
    echo "\"$tagName\",\"$date\"" >> ${OUTPUT} 
done 
+0

Parece que el comando list all tags funciona, pero aparece el error "Terminated with fatal signal 11" antes de imprimir la salida. – tjwrona1992

3

CVS no pueden hacer eso, es demasiado primitivo. Las etiquetas se adjuntan a revisiones de archivos individuales, no al módulo o repositorio. Además, las etiquetas no tienen metadatos de fecha, por lo que tampoco se puede saber cuándo se crearon.

Así que ninguno de los criterios de selección especificados pueden ser utilizados. El único criterio que puede uso es un archivo versionado específica, que le dirá qué revisiones tienen que etiquetas, pero eso es todo.

+0

¿Es posible manipular la salida de cualquiera de los comandos CVS para obtener esta información? –

+0

@Salman: No, como dije, CVS no almacena esa información. – skaffman

+0

Gracias. He publicado algunos de mis hallazgos y la forma en que soluciono el problema. Este no es un método preciso, pero me da resultados bastante buenos. ¿Puedes echarle un vistazo a la respuesta y decirme si encuentras algo mal aquí? Acabo de comenzar con CVS hace un par de días, una segunda opinión será de gran ayuda. Gracias. –

4

Si ha activado la función de la historia, se puede ejecutar el siguiente comando:

cvs history -a -T 

que le dará algunas líneas de este tipo, que le da la fecha + hora, el usuario, el módulo y el nombre de etiqueta de cada operación de etiquetado:

T 2011-04-02 07:55 +0000 ralph mylib [testtag:A] 

Para más información consultar la cvsbook on history

16

acabo de aprender:

cvs status -v 

listas de todas las etiquetas y braches para cada uno y cualquier archivo junto con la revisión al que pertenece.

Puede trabajar desde allí ...

Cuestiones relacionadas