Ответ 1
Можно указать теги или ветки, присутствующие в модуле, используя следующую команду. Это что-то взято из другого ответа на SO
Чтобы просмотреть все теги:
cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)!=0{print $1}' | sort -u
Перечислить все ветки:
cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u
Это использует номера магической ветки для идентификации, символическая ссылка - это ветка или тег.
Как скаффман упоминается в одном из ответов на этой странице, определить дату создания тега невозможно. Самое лучшее, что можно сделать, это определить приблизительную дату, рассмотрев самую последнюю дату, указанную в журналах для этого тега.
Что-то вроде этого:
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: //'
Это bash script Я разработал список всех тегов с ок. дата создания
#!/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