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

时间:2011-05-30 09:52:33

标签: version-control cvs

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

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

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

5 个答案:

答案 0 :(得分:20)

我刚学会了:

cvs status -v

列出每个文件的所有标签和分支及其所属的修订版。

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

答案 1 :(得分:14)

可以使用以下命令列出模块中存在的标签或分支。这是从another answer at 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

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

正如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: //'

这是一个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

答案 2 :(得分:4)

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

cvs history -a -T

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

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

有关详细信息,请查看cvsbook on history

答案 3 :(得分:3)

CVS无法做到这一点,它太原始了。标签附加到单个文件修订版,而不是附加到模块或存储库。此外,标签没有日期元数据,因此您无法确定它们何时被创建。

因此,不能使用您指定的选择标准。您可以使用的唯一标准是特定的版本化文件,它会告诉您哪些修订版具有哪些标记,但就是这样。

答案 4 :(得分:0)

我正在使用cvsnt(install)..

查询:

1)我只想要cvs中的标签名称列表。

2)如何使用cvsnt创建存储库。

3)如何将整个模块检入新存储库。

我尝试示例:

1)尝试创建新存储库时

cvs -d :pserver:<user>@<host>:<new_repository> init

2)将模块导入存储库

cvs -d repository_path import name_of_project vendor_tag release_tag