在我的开发团队中,我们使用需求管理来控制产品的预期行为和功能,并使用bug报告工具跟踪“问题报告”(PR)。需求中的任何更改都是由“变更建议”( change proposal,CP)完成的,它的作用与代码存储库的提交非常相似。
为了做出任何修改最终产品的提交,必须在CVS提交评注中提供一个跟踪,它可以是CP (这意味着您的代码上的更改反映了产品的更改)或PR (这意味着正在对代码进行更改以纠正问题)。CPs和PRs被编号,这样就可以将代码中的更改链接到引起项(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
发布于 2012-11-26 13:48:40
我不想回答我自己的问题,但我认为这可能对将来有同样问题的人有帮助。
好吧,我设法在“日志消息”(cvs术语,用于提交注释)中执行搜索,过滤日志消息中文本的内容,并对在提交时更改的文件进行分组。
正如'Joakim‘这里所指出的,cvsps是一个很好的工具,可以将提交信息分组到“修补程序集”中,这些补丁集是单独提交的,其中引用了在这些提交中更改的所有文件。
我使用了为cygwin打包的cvsps版本,因为此时没有用于windows的端口。
只需安装带有internet安装程序的这里,当选择软件包时,搜索cvsps和cvs,同时安装两者。
我无法使用系统上的签出文件(通过/cygdrive/c文件夹),所以我从cygwin shell中签出了这些文件。
乌龟用户开始使用Obs
您需要通过命令将CVSROOT环境var设置为存储库的当前CVSROOT:
export CVSROOT="Your CVSROOT string here"通常,如果检查签出代码库中任何文件的属性页,就会有一个名为CVS的选项卡。会有你的CVSROOT字符串。(如果您像我一样使用:sspi:连接到您的远程存储库,您可以尝试将它切换到:pserver:,它确实对我有效,但我不知道具体原因)。
龟类使用者的终端机
那么,在签出您的存储库之后,使用命令:
cvsps这将为您的请求创建cvsps修补程序库。然后使用:
cvsps -l "Some regexp code"它将在补丁集中搜索与输入regexp匹配的日志消息。
这是在我的数据库中使用cvsps -lP100-PR-FX`的一个示例(更改了一些文件名和路径以使其公开.):
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>之间的更改。
https://stackoverflow.com/questions/13519342
复制相似问题