针对Starteam,写了如下HowTo。原因是图形界面的操作固然有其方便性,但也随处埋藏着地雷。
例如:权限设置不当,任何人可以选择工程的根目录,按一下DEL键,只有一次确认机会,便会在不到一秒种的时间,删除整个工程所有文件。如果这时不知所措,重新再次重建整个工程,比如重新 checkin整个工程的5000 个文件,则服务器中的文件个数翻倍。这些文件作为新文件,不但让你为找不回Commit LOG而头大,管理员总有一天也会为服务器存储空间头大。
1. Server Configuration
1.1 用户角度
在使用Starteam客户端连接服务器前,首先要设置服务器的IP地址、端口号等参数,以建立连接Starteam服务器的Profile。这可以称为用户眼中的Server Configuration。
用图形界面的Starteam客户端,按如下方式设置:
(1)Project->Open->Add Server
(2)设置服务器名、IP地址、协议(TCP/IP Sockets)、端口(49201)、加密(选择任意一种加密方式)。
命令行Starteam,请用我们自己封装的Wrapper: "st"。
obsd99:/home/jiangxin/work/src/project/main>st config
StarTeam Configuration
Original starteam server is 10.1.1.60
new server:[10.1.1.60]
Original starteam server port is 49201
new server port:[49201]
original username is jiangxin
new username:[jiangxin]
Password:[********]
Original checkout project is project
Project you want to checkout:[project]
Original checkout view is ("/" means root view)
View you want to checkout:[]
Original checkout folder is Development ("/" means root folder)
Folder you want to checkout:[Development]
Working dir is /usr/home/jiangxin/work/src/project/main
Your working directory:[/usr/home/jiangxin/work/src/project/main]
Sticky tag base on date : ("/" means not exist)
Date:[]
Sticky tag base on label : ("/" means not exist)
Label:[]
Sticky tag base on promotion-state : ("/" means not exist)
Promotion-state:[]
Server Configuration的配置保存在工作目录中;用户口令加密保存在用户主目录的文件.stpass中。
1.2 管理员角度
(1)一个服务器配置(Server Configuration),作为一个独立的服务运行,有独立的用户数据库,独立的版本控制文件仓库(Repository),独立的一个数据库来支持。
(2)一台服务器上可以运行多个不同的Starteam服务器配置,不同的Server Configuration需要分配不同的端口设置。
(3)一个服务器配置内可以运行多个工程(Project),一个Project中可以有多个视图(View),视图中有目录、文件、Change Request等元素组成。
(4)一个服务器配置中的文件等元素可以在工程之间,视图之间共享(类似于拷贝的动作);但是元素不能跨服务器配置共享。
(5)配置文件
Configuration\server.scg
Configuration\server.cph
(6)数据库文件
Database\StarTeamDB.mdb (Assuming Access database)
(7)数据仓库
版本控制文件仓库(Repository):Vault/Archive/;版本控制文件存储在该目录中,其中没有子目录,文件名以流水号依次排列;每个文件控制一个分支的所有版本文件的控制,类似于CVS的版本控制文件,但不同之处是该文件包含二进制的头尾,如果文件分支,CVS仍由一个文件来控制,而Starteam则形成一个新的文件;CVS的Tag包含在文件上,即如果对文件加Tag,文件被更新,而Starteam的Label(相当于CVS的Tag)不包含在文件中,而是存储在数据库中。
(8)Cache
Cache文件夹是为了加速文件Checkout。当一个文件被Checkout,便在该目录建立Cache,文件名结构为:文件名.版本号。
(9)其他
包括Log、Attachments(Change Request、Topic等的附件文件)
2. Project
2.1 用户角度
选择Server Configuration列表,输入正确的用户名和密码,即打开该Server Configuration下你有权限的工程列表,选择某一工程。
2.2 管理员角度
(1)在Server Configuration下,列表显示的工程列表,即代表了一个个工程。
(2)工程是由一系列视图组成,根视图通常作为工程的缺省视图,直接选择某工程,和选择缺省视图的效果一致;
创建工程,即创建工程的根视图。尽量在设置权限时,按照工程、视图、文件夹的方式来设置权限。
(3)设置权限时,一定设置工程和视图不能被任何人删除!因为一旦删除无法找回。
3. View
(1)通过Project->Open来打开某一工程,会显示视图列表。视图间的关系通过一个树图表示出来。根视图通常作为工程的缺省视图,直接选择某工程,和选择缺省视图的效果一致;
(2)根视图通常表示目前正在开发的版本;而分支视图表示维护的旧代码分支,或者功能独立的代码分支;
(3)视图是主要用途是管理分支,即将一个分支作为一个独立的视图;当然也可以对不同用户建立视图,但是通过对目录的权限控制来实现不同用户使用同一个视图更好;
(4)如果对视图中不同目录分别设置权限,则用户查看该视图,只能看到具有权限的目录。
(5)Label只在同一个视图中起作用,且View Label、Build Label、Promotion State作用于一个视图中所有文件;
(6)由于Change Request需要用到Build Label,测试人员用到Promotion State,因此需要在同一个视图内存放程序目录、Change Request目录、测试人员目录等;但文档具有相对独立性,建议单独建立工程,再共享到其他工程和视图中。