5. Label
Starteam的标签(Label)主要用来记录事件,如里程碑,和代码分支没有必然的联系;而CVS的分支必须依靠Tag来完成。
CVS的Tag是记录在文件中,建立Tag耗时;Starteam的Label是建立在数据库基础上的,建立Label属于毫秒级的动作。
Starteam的Label是建立在视图中,文件和视图脱离关系,该文件上的Label失去。
如何使用Label管理项目的示例,参见http://www.fox.se/english/starteam/best_practices/starteam_best_practices.htm,提供了Starteam利用Label协同工作的范例,这些工作有些是CVS很难做到的。
下面具体介绍Label的几个不同的变种:View Label、Build Label、Promotion State、Revision Label。
5.1 View Label
View Label针对一个View中所有文件,可以用来记录项目的里程碑。
View Label非常灵活,可以将后来新增加的文件加入到View Label中。
文件移到到其他视图和文件删除对View Label有不同影响:移出文件的View Label会自动去掉,并且历史视图,该文件也不存在了,因为文件被移动了。删除的文件则不然,仍可以通过历史被访问到,并且删除前的文件仍然具有该View Label。
5.2. Build Llabel
在创建View Label中有"Use as Build Label"的选项,默认创建的View Label 就是Build Label。
Build Label基本上等同于View Label,除了Build Label在Change Request的工作流程中会被引用到。Build Label可以用来帮助测试人员了解Bug在哪一个 Build Label中被解决了。
5.3. Promotion State
Promotion State可以看作是是浮动的View Label、View Label的标签。
通常要建立的Promotion State有:Release、Beta Test、Alpha Test,...。并且要按照顺序建立,这样可以通过提升,将Beta Test对应的Build Label,提升为Release,即用Release来指向Beta Test的Label。
建立在View Label基础之上,为编译Checkout代码,提供一个一致的Label。可以方便地建立Nightly Build系统。
5.4. Revision Label
Revision Label可以用来对一个视图中单独的文件或某些文件(或元素如Change Rrequest),单独建立Label。便于文件查找。
同View Label一样,文件如果被移动到该视图之外,失去Revision Label。
6. 目录划分
表格 项目工程目录结构
目录 |
说明 |
权限 |
Development |
程序源码,及帮助 |
组成员完全权限 |
Defect |
用于记录缺陷控制的目录 |
组成员控制Chang Request完全权限;所有人具有添加修改Chang Request权限 |
Document |
项目文档 |
组成员完全权限;文档工程师完全权限。(现已废弃不用) |
ProjectManagement |
项目范围控制,时间控制等 |
组成员读权限;项目经理完全权限 |
以上各个目录,只有项目管理人员和系统管理员具有修改安全设置权限。
6.1. 源码的版本控制
Development目录下建立各个相关模块目录;
模块的目录组织结构应该和Checkout 到本地的编译代码目录结构一致。
注意二进制文件尽量不要放在Starteam中,而改用其它方式(如文件服务器),来进行存储!

图4 CWAP 1.1分支视图目录结构图
6.2 文档的版本控制
文档的管理,涉及到大量的二进制文档(WORD),改用文件服务器来存储。
6.3 缺陷控制
建立Defect目录,并在其下建立需要测试的相应模块的目录。
目录的权限设置为只读(对QA经理开放建立目录权限等)。对于Change Request,设置为任何人/QA/组内人员具有添加,修改权限等。
建立Defect Tracing目录,而不是在根目录下存放Change Request的好处是:1. 便于设置权限;2. 建立相应模块,便于Bug归类存放,不用在Category中填写易出错。

图5 Defect示例
6.4 ProjectManagement目录
ProjectManagement下,通过文件和topic方式,存储TODO LIST、编程规范、需求变更等信息。用户进行范围管理、工作管理等。
ProjectManagement权限设置为项目经理完全权限。