问题描述
|
是否有任何CLI命令可用于获取在指定时间范围内在模块的分支或头上创建的标签的列表?
我简要需要的是标签列表和创建日期。给定以下参数
模块名称
分支名称(或:: HEAD)
开始日期
结束日期
解决方法
我刚学到:
cvs status -v
列出每个文件和所有文件的所有标签和分支以及其所属的修订版。
你可以在那里工作...
, 可以使用以下命令列出模块中存在的标签或分支。这是从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
, 如果启用了历史记录功能,则可以执行
以下命令:
cvs history -a -T
它将为您提供如下几行内容,为您提供每个标记操作的日期和时间,用户,模块和标记名:
T 2011-04-02 07:55 +0000 ralph mylib [testtag:A]
有关更多信息,请查看cvsbook的历史记录
, CVS无法做到这一点,这太原始了。标签被附加到单个文件修订版,而不是模块或存储库。此外,标签没有日期元数据,因此您也无法确定它们的创建时间。
因此,无法使用您指定的选择标准。您可以使用的唯一条件是特定的版本文件,该文件将告诉您哪些修订版具有哪些标签,仅此而已。
, 我正在使用cvsnt(install)来使用Cvs信息库。
查询:
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