【发布时间】:2011-05-30 09:52:32
【问题描述】:
是否有任何 CLI 命令可用于获取在指定时间范围内在模块的分支或头上创建的标签列表?
我简要需要的是标签列表及其创建日期。给定以下参数
- 模块名称
- 分支名称(或 :: HEAD)
- 开始日期
- 结束日期
【问题讨论】:
标签: version-control cvs
是否有任何 CLI 命令可用于获取在指定时间范围内在模块的分支或头上创建的标签列表?
我简要需要的是标签列表及其创建日期。给定以下参数
【问题讨论】:
标签: version-control cvs
我刚学会:
cvs status -v
列出每个文件的所有标签和分支以及它所属的修订版。
你可以从那里工作......
【讨论】:
可以使用以下命令列出模块中存在的标签或分支。这是从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
【讨论】:
如果你启用了历史功能,你可以执行 以下命令:
cvs history -a -T
它会给你一些这样的行,给你每个标记操作的日期+时间、用户、模块和标记名:
T 2011-04-02 07:55 +0000 ralph mylib [testtag:A]
更多信息请查看cvsbook on history
【讨论】:
CVS 做不到,它太原始了。标签附加到单个文件修订,而不是模块或存储库。此外,标签没有日期元数据,因此您也无法知道它们是何时创建的。
因此,您指定的任何选择标准都不能使用。你可以使用的唯一标准是一个特定的版本文件,它会告诉你哪些修订有哪些标签,但就是这样。
【讨论】:
我正在使用 Cvs Repository 使用 cvsnt(install) ..
查询:
1) 我只想要来自 cvs 的标签名称列表。
2) 如何使用 cvsnt 创建 Repository。
3) 如何将整个模块签入到新存储库中。
我试试样品:
1) 当我尝试创建新的存储库时
cvs -d :pserver:<user>@<host>:<new_repository> init
2) 将模块导入存储库
cvs -d repository_path import name_of_project vendor_tag release_tag
【讨论】: