ver tipos tener tag sirve ramas qué proyecto podemos para nuestros nos mayor herramienta hacer etiquetas eliminar cuando create creamos control version-control cvs

version-control - tipos - ¿para qué nos sirve el sha-1 cuando creamos tags?



¿Cómo obtener una lista de etiquetas creadas en el repositorio CVS? (4)

¿Hay algún comando de CLI que se pueda usar para obtener una lista de etiquetas que se hayan creado en una rama o cabecera de un módulo dentro de un marco de tiempo específico?

Lo que necesito brevemente es una lista de etiquetas y la fecha en que se crearon. Dados los siguientes parámetros

  1. Nombre del módulo
  2. Nombre de la rama (o :: HEAD)
  3. Fecha de inicio
  4. Fecha final

Acabo de aprender:

cvs status -v

Enumera todas las etiquetas y braches para cada archivo y cualquier archivo junto con la revisión a la que pertenece.

Podrías trabajar desde allí ...


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

Por lo tanto, no se puede utilizar ninguno de los criterios de selección que especificó. El único criterio que puede usar es un archivo versionado específico, que le dirá qué revisiones tienen qué etiquetas, pero eso es todo.


Si tiene la función de historial habilitada, puede ejecutar el siguiente comando:

cvs history -a -T

Le dará algunas líneas como esta, que le darán fecha + hora, usuario, módulo y 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 revisa el cvsbook en la historia.


Uno puede enumerar etiquetas o ramas presentes en un módulo usando el siguiente comando. Esto es algo recogido de otra respuesta en SO

Para enumerar todas las etiquetas:

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

Para enumerar todas las ramas:

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

Esto utiliza los números de rama mágica para identificar si un enlace simbólico es una rama o una etiqueta.

Como mencionó skaffman en una de las respuestas de esta página, no es posible determinar la fecha en que se crea la etiqueta. Lo mejor que puede hacer es identificar una fecha aproximada considerando la fecha más reciente que figura en los registros de 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 de bash que hice para dar una lista de todas las etiquetas con sus 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