在项目版本控制中,要处理的程序是10^4的规模,开发过程中,程序员在版本库中形成1.XX版本,在测试中,是逐模块,逐Tech
Spec进行测试,这样就要求要把相同Tech Spec改动的程序的特定版本逐次提取。实际中,我们使用Merant Tracker生成SCR
Number,程序员每次check in程序,将会要求必须associate SCR number才可以check in。这个association实际上就是给程序的新版本打上一个version
label。
在实际项目中,有时会需要给上万个组件打统一的Version Label。如果这些组件在PVCS的同一个文件夹中,只需要在PVCS
Version Manager的GUI中操作即可,但是如果不在同一个文件夹中,或者是需要打Version Label的程序版本不同的情况,就必须用命令行模式批量处理了。
[注] 这里说的命令行,是给出的实例。详细的命令行参考,可以参见Version Manager的说明文档(安装后就有,在程序组里面,PDF格式的;或者在安装文件夹下的\books\vm\中可以找到vmbooks.pdf)中的PCLI
USER'S GUIDE AND REFERENCE章节。
1. 增加Version Label至某程序的特定版本,示例:
pcli label -pre:\ProjectName -idUsername:Password -r1.0 -vSCR-10049
/Folder/Component.COB
-pre: 项目名,就是Version Manager中的根项目;
-id 跟用户名:密码,需要有相应权限,直接跟,没空格(以后不再累述,例子中没空格就是没空格)
-r 跟要打Version Label的组件的版本,这里是往Baseline上打;
-v 跟Version Label的名字,如果名字含空格,就要用双引号括起来;
最后是要加version label的组件在根项目中的路径及名字。
2. 删除某程序的特定Version Label,示例:
pcli Deletelabel -pre:\ProjectName -idUsername:Password -vSCR-10049
/Folder/Component.COB
-pre: 项目名,就是Version Manager中的根项目;
-id 跟用户名:密码,需要有相应权限;
-v 跟Version Label的名字,如果名字含空格,就要用双引号括起来;
最后是要加version label的组件在根项目中的路径及名字。这里不需要指明版本,原因是一个名字的version label在一个程序的版本树中只能出现一次,如果你在1.0上打了SCR-10049,然后又在1.3上打了SCR-10049,那么1.0上的SCR-10049就会消失,实际上是把1.0的version
label转移到1.3版上。
3. 递归地删除某文件夹下的所有特定Version Label,示例:
pcli Deletelabel -pre:\ProjectName -idUsername:Password -vSCR-10142
-z /Folder
-pre: 项目名,就是Version Manager中的根项目;
-id 跟用户名:密码,需要有相应权限;
-v 跟Version Label的名字,如果名字含空格,就要用双引号括起来;
-z 意思是递归,不加-z就是只删除那个文件夹下的所有组件的version label,而不会去碰它的子文件夹;
最后是目标文件夹的名字(version manager中的名字)。
对于上万条记录的情况,可以先把目标文件列表确定。
Versiong Manager可以生成Change History Report,非常详尽,可以根据版本、文件夹、修改时间、作者来列出不同范围的文件,遗憾的是生成的报告是HTML格式的,我的做法是先存成txt文档,然后我自己写了个java程序过滤了一下,滤出所有的文件路径、文件名信息,存为csv文件,然后用excel批量处理之并生成批处理文件。
|