在我的开发团队中,我们使用需求管理来控制产品的预期行为和功能,并使用错误报告工具来跟踪“问题报告”(PR)。需求的任何更改都是通过“更改提议”(CP)完成的,其行为与代码存储库中的提交非常相似。
为了进行任何更改最终产品的提交,必须在CVS提交评论中提供跟踪,这可以是 CP (这意味着更改在您的代码上反映了产品的变化)或 PR (这意味着代码中的更改正在纠正问题)。对CP和PR进行编号,以便可以将代码中的更改链接到导致项目(CP或PR)。
Kind: Error Correction
Trace: PR-015 Crashing upon startup
Description: Edited file foo.c in order to verify uninitialized variables.
Kind: Development
Trace: CP-053 New login mechanism
Description: Added login mechanism with library X and blablabla.
我的问题是,我没有任何简单的方法来检索为特定CP或PR更改的所有文件,也无法检索对代码所做的所有更改。
我曾尝试使用regexp(来自python的RE)来解析日志,但是覆盖所有可能的日志有点困难。我的正则表达式甚至在适应它之后也无法在这里和那里检索列表。
所以,我一直在想是否有更简单的方法或任何项目或产品,甚至CVS内置功能都可以帮助我。
客观问题:如何在提交中检索已修改文件的列表,该列表可由格式正确的标记(CP或PR)识别?有更简单的方法还是应该坚持使用日志解析?
操作系统:Windows XP CVS服务器:cvsnt CVS客户:tortoise / cvsnt
答案 0 :(得分:0)
不想回答我自己的问题,但我认为对于有相同问题的人来说,这可能对今后的参考有所帮助。
好吧,我设法在“日志消息”(提交评论的cvs术语)内执行搜索,按日志消息中文本的内容进行过滤,并对在该提交中更改的文件进行分组。
正如'Joakim Elofsson'here所指出的,cvsps是一个很好的工具,用于在'补丁集'中对提交信息进行分组,这些补丁集是对这些提交中更改的所有文件的引用的单独提交。
我使用了为 cygwin 打包的cvsps版本,因为目前还没有适用于Windows的端口。
只需使用可用的互联网设置here安装cygwin,然后在选择套餐时,搜索 cvsps 和 cvs ,同时安装两者。
我无法在我的系统上使用签出的文件(通过/ cygdrive / c文件夹),所以我从cygwin shell中检出了它们。
BEGIN乌龟用户Obs
您需要通过以下命令将CVSROOT环境var设置为存储库的当前CVSROOT:
export CVSROOT="Your CVSROOT string here"
通常,如果检查已签出代码库的任何文件的属性页面,则会有一个名为 CVS 的选项卡。会有你的CVSROOT字符串。 (如果您正在使用:sspi:像我一样连接到您的远程存储库,您可能会尝试将其切换到:pserver:,它确实对我有效,但我不确切知道原因)。
END乌龟用户的罢工
好吧,在检查了您的存储库使用命令之后:
cvsps
这将为您的请求创建cvsps补丁集基础。然后使用:
cvsps -l "Some regexp code"
它将在补丁集中搜索与输入正则表达式匹配的日志消息。
这是在我的数据库中使用cvsps -l
P100-PR-FEX`的示例(更改了一些文件名和路径以便公开...):
PatchSet 71
Date: 2012/10/25 11:30:44
Author: GUARITA
Branch: HEAD
Tag: (none)
Branches:
Log:
Kind: Error correction
Trace: P100-PR-FEX145
Description:
Corrections of the TRUE and FALSE conventions used by the C++ (true:everything but 0, false:0) P100 interface to the VB6 (false:0, true:-1 or 'all bits set to 1 which is -1 in 2's complement') P100Interface ActiveX object.
P100 Panel Version increment.
Members:
SidePanels/P100.wimp:1.2->1.3
SidePanels/Calcs/P100Interface/private/P100Interface.cpp:1.2->1.3
您也可以使用它来比较标记(我用来控制版本)与cvsps -r <tag1> -r <tag2>
之间的变化。