如何获取在CVS存储库中创建的标签列表?

Sal*_*gzi 19 cvs version-control

是否有任何CLI命令可用于获取在指定时间范围内在模块的分支或头部创建的标记列表?

我简要需要的是标签列表及其创建日期.给出以下参数

  1. 模块名称
  2. 分支名称(或:: HEAD)
  3. 开始日期
  4. 结束日期

小智 21

我刚学会:

cvs status -v
Run Code Online (Sandbox Code Playgroud)

列出每个文件的所有标签和分支以及它所属的修订版本.

你可以在那里工作......


Sal*_*gzi 14

可以使用以下命令列出模块中存在的标签或分支.这是SO的另一个答案

列出所有标签:

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

列出所有分支:

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

这使用魔术分支号来识别符号链接是分支还是标记.

正如skaffman在本页面的一个答案中提到的那样,无法确定标签创建的日期.最好的方法是通过考虑该标记的日志中列出的最新日期来确定大致日期.

像这样的东西:

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: //'
Run Code Online (Sandbox Code Playgroud)

这是一个bash脚本,我用它来列出所有标签的大约.创立日期

#!/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
Run Code Online (Sandbox Code Playgroud)


Ral*_*lph 5

如果您启用了历史记录功能,则可以执行以下命令:

cvs history -a -T
Run Code Online (Sandbox Code Playgroud)

它会给你一些像这样的行,给你每个标记操作的日期+时间、用户、模块和标记名:

T 2011-04-02 07:55 +0000 ralph  mylib [testtag:A]
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请查看cvsbook 的历史记录