UML软件工程组织

ClearCase Interoperation实例详解
史 新丽, IBM中国软件开发实验室 Rational Team 软件工程师

本文力图通过搭建一个实验环境来模拟ClearCase真实用户的开发环境,使得读者对于在多平台,跨平台的异构环境中有效的运行和使用ClearCase有一个初步的了解。

前言

本文力图通过搭建一个实验环境来模拟ClearCase真实用户的开发环境,使得读者对于在多平台,跨平台的异构环境中有效的运行和使用 ClearCase有一个初步的了解。对于大型的软件开发项目,由于源代码庞大,开发人员众多,为了分散ClearCase运行负载,提高运行效率,一般来说推荐将ClearCase架构中的服务器,例如Vob Server, View Server,Registry Server分布到各个不同的主机/服务器上安装。用户可能希望将Vob Server安装到一个性能较高的Unix/Linux的系统下,将Registry Server安装到windows机器上,而用户通常使用windows的ClearCase客户端来做开发,这样就涉及到了Windows/Unix (Linux)系统之间的互操作(interop)问题。本文将通过对实验的描述来一步一步介绍其中涉及到的步骤,问题,注意事项等。

回页首

名词解释

Interoperation: 通过对Rational ClearCase的设置,使得网络上的Rational ClearCase资源可以在unix(linux)和windows机器上都可以访问。

介绍

这次的实验有以下四个目的:

1. 实现分布式安装和配置ClearCase架构中的Server,并让他们能够协同工作。在设计的实验中,一共设置了4台机器作为Server,另一台作为客户端。

2. 尝试从windows端访问linux上的Vob资源。

3. 尝试在这种分布式,跨平台架构中使用UCM进行开发。

本文将通过以下各个章节来呈现搭建ClearCase分布式环境的步骤:

* ClearCase架构设计
* ClearCase用户环境准备
* 在Linux上安装SAMBA
* ClearCase安装顺序
* ClearCase的安装
* 用户信任交验
* 在Linux机器上面创建Vob
* 从windows端导入Linux的vob tag
* 在windows上面创建和配置Project
* 在windows的Client端使用ClearCase进行开发
* Tips

回页首

ClearCase架构设计

在设计的实验中,一共设置了4台机器作为Server,另一台作为客户端。通过虚机,搭建以下的环境:

1. License Server: windows

2. Registry Server: windows

Unix/Windows的ClearCase主机可以使用同一registry server。 Registry Server可以是windows或者unix任何一种系统,在这个是实验中,我们使用的是基于windows的registry server。虽然可以使用统一的registry server,但是必须强调的是在跨平台的操作中,必须要建立至少两个region。ClearCase要求Unix的机器和windows的机器必须分别划分到不同region中。在这个实验中,创建的两个region分别是ccwin和ccunix,所有的windows机器都属于ccwin的 region,linux机器属于ccunix的region。可以在Registry server上使用下面的命令创建region:

cleartool mkregion -tag region-tag

3. Vob Server: redhat Linux 9.0

4. View Server: windows

5. Client host: windows

为了描述方面,先对每台机器进行描述,包括机器名,用途, 每台机器所属region信息:

可以通过下面的图来更好的理解实验的环境:

回页首

ClearCase用户环境准备

首先要配置windows Domain,该服务器主要用来作为windows环境中的用户管理。所有的ClearCase中windows服务器和Clent端都要是这个Domain中的成员。也就是说ClearCase是可以信任domain中包含的用户账号的。

为了减少账号管理所带来的工作量,可以为一些特别的功能创建基于角色的账号,比如"vobadm"(管理vob的admin), "relmgr"(管理release area的admin), "projmgr"(管理project 的admin)等。对于每日都需要进行的操作,比如checkout, checkin,就需要创建developer的账号。使用Developer的账号在对某一个element的操作的时候,user id和group信息都会记录下来,但是对于访问某些ClearCase Object,这些developer的账号是有限制的,在这种情况下,使用trigger和lock就可以扩展访问ClearCase Object的保护机制。

Windows的ClearCase的账户管理可以使用windows domain,那么unix上面的ClearCase的账户管理呢? 尤其是涉及到了windows和unix并行存在的ClearCase的环境,账号管理就更加重要。

当以某一用户id登陆到安装了ClearCase的系统主机上以后,这个id就已经决定了某种信任,这种信任是可以控制用户对于Vob和View中的artifacts的访问控制权限。简单地说,就是以什么样的用户登陆系统,就具备了已经赋予了该用户的所有访问控制权限。在Vob和View中的 artifacts已经记录了用户和对应的一个或者几个组的信息,artifact用这些已经储存好的用户和组的信息和要对artifacts操作的用户和组信息进行比较,如果能够匹配的话,就可以修改这些artifacts,否则就是没有权限。对于从windows访问unix上的vob这种互操作的 ClearCase环境,最重要关键的一点是:Unix和windows系统上要具有相同的用户和组。Winodws的域用户名称必须要和Unix上 ClearCase的用户名称匹配,Windows的域用户所属的primary组(通过CLEARCASE_PRIMARY_GROUP用户环境变量设定)必须要和Unix上ClearCase用户的主组匹配。

在windows上用户和组的名字是case-insensitive,然而在unix上就是case-sensitive。所以如果是互操作的环境,unix和windows上面的unix和windows上面的用户和组不但要名字相同,大小写也要相同。但是ClearCase在互操作的平台下密码是可以不同的,也就是说在Windows的域中,用户账号和组的账号具有一套密码,而在unix上面可以自行定义令一套密码。

在windows上运行albd_server服务进程的用户账号是一个特殊的windows域用户的账号,这个账号缺省就是 clearcase_albd。在互操作的环境中,如果从windows的dynamic view中访问unix上的vob,就要在unix的用户定义的时候考虑到:unix上必须存在一个用户能够映射这个运行windows上 albd_server服务进程的用户。在windows上运行albd_server的用户映射到unix上后成为了另一个user,这个user要能够访问unix上的Vob。

Unix在创建这个可以映射window上运行albd_server的用户账号的时候,要考虑以下几点。

* 这个unix的用户必须属于某一个组,这个组是有权限访问unix上vob或者view的。使用cleartool describe -long命令,可以看到vob或者view的访问控制权限信息。
* 这个unix的用户的primary组的名字必须和windows的域用户的primary组的名字相同。

在这次实验中,用户的设定如下所示:

Windows端:
首先已经建立好了windows的域服务器
在域服务器上,创建组clearcase和组testers
在域服务器上创建域用户clearcase_albd, ccinst, testernt
其中clearcase_albd属于clearcase组,ccinst和testernt都属于testers组

Linux端:
创建组testers
创建用户ccinst,testernt,使得他们都属于testers组

回页首

在Linux上安装SAMBA

为什么要在linux上安装samba呢?如果开发的需求只是从windows的snapshot view访问Linux上VOB数据的话,只需要配置windows上的CCFS (控制面板 -> ClearCase -> Option ),而并不需要在Linux上安装samba。但是,如果开发需要使用dynamic view访问Vob的话,就需要这样做了。

事实上,ClearCase提供了两种方式来支持从windows的dynamic view访问Linux/Unix上的Vob:

1. NFS客户端产品,这个软件是运行在windows的用户端的并且通过NFS协议来访问Linux/Unix的文件系统。

2. SMB服务器端产品,这个软件是运行在Linux/Unix上的,使用SMB/CIFS协议提供windows访问Linux/Unix文件系统的功能。

在我们的例子里面,采用了第二种方式,即在Linux端启动SMB服务,使得windows能够访问到Unix的资源。Samba的安装和配置可以在安装ClearCase前进行试验,因为从windows可以访问linux/unix的文件资源,是系统级的操作。在这个实验中,先对samba进行了配置,之后再介绍安装ClearCase以及使用ClearCase的工具进行用户信任的校验,最后才进入windows view访问linux vob的介绍。

在Linux redhat 9.0 ES的系统中,已经缺省的安装了Samba,只要运行redhat-config-samba,就可以方便的调出samba的图形界面。可以通过 smbpasswd -a accout命令添加samba的用户,执行这条命令的同时,也给这些用户赋予了密码。这些samba用户是可以访问Linux/Unix上通过samba共享出来的资源。

创建共享目录,可以利用以下的Samba界面,来添加共享目录

在Access的Tab页中,可以指定访问权限,如下图所示,共享出来的目录只允许testernt和ccinst两个Samba用户访问:

或者可以不使用以上的图形界面来配置samba,而是只是改动samba的配置文件(smb.conf):

[global]
workgroup = testers
encrypt passwords = yes
create mask = 0775
directory mask = 0775
username map = /usr/local/samba/lib/username.map
oplocks = no
kernel oplocks = no
case sensitive = no
preserve case = yes

[vobs] :
comment = Vob Storage Directory
browseable = yes
path = /var/tmp /vobs

配置好之后,再调用redhat-config-services将samba服务启动。关于Samba的安装和配置,不同的Linux/Unix系统有所不同,具体情况请参照samba的安装手册。

下一步就是如何验证samba是否安装成功,建议在验证是否可以从Windows的客户端访问到Linux/Unix上的Vob和View之前,最好先进行以下两步验证。第一步,在linux/Unix系统上使用samba工具,查看目录是否share出来,使用以下命令:

smbclient -L 机器名/IP

第二步,验证从windows端是否可以访问linux/Unix的文件系统,这与系统是否安装了ClearCase无关。步骤如下:

1. 在windows端,试图访问linux/Unix的share目录(如例中为:\\vob_svr\vobs),这个时候通常会要求你输入密码(如果你是以samba用户的名字登陆windows系统并且登陆windows系统的密码和samba用户的密码也是匹配的,该提示密码输入的对话框将不会出现)

2. 在windows端,访问到share出来的目录后,在这个目录里面创建一个文件。

3. 请验证你是否可以访问share的目录,如果可以访问,检查是否可以有写的权限。如果都可以的话,这一步的验证就通过了。

经过上面2步的验证之后,可以初步判定Samba的安装和配置没有什么问题了,这就为从windows view访问linux/unix vob资源做好了准备。

回页首

ClearCase安装顺序

推荐使用下面的安装顺序进行安装:

1. license server 和registry server .可以合并装到一台机器上面

2. Vob server: vob的物理存贮是在驻留在vob server上面的。推荐将vob server单独分离出来,便于管理,如果项目比较大,vob个数比较多,最好配置多个vob server以降低负载,提高性能。

3. View server: view的物理存储是驻留在view server上面的。 该实验将view server单独分离,这样做的好处也是可以便于view的管理,比如备份,但是如果从性能的角度考虑,推荐使用用户local的机器作为view server。

4. Client host: 用户将在客户端上运行ClearCase的客户端程序。就像上面说的一样,一般来说,用户会在运行ClearCase的客户端机器上面创建view 存储目录,那么这个客户端也可以算作view server。

回页首

ClearCase的安装

每一台我们都需要安装ClearCase。 请参见ClearCase的安装手册。 安装后,在Registry Server上建立两个region,ccwin和ccunix。Vob Server,View Server,Client端的registry Server都指向这台Registry Server(控制面板-->ClearCase -->Registry),并且使得windows的机器属于ccwin的region,Linux的机器属于ccunix的region。重新启动ClearCase的服务(控制面板-> ClearCase -->Services Startup)。

做完以上安装和设置,请对windows上的每一台机器运行ClearCase Doctor,来检查是否配置失败。在Linux/Unix上,可以使用一些ClearCase的命令来检验:比如cleartool lsregion。

回页首

用户信任校验

在"用户设定"一节中已经说到了以下几个重要方面:

1. Winodws的域用户名称必须要和Unix上ClearCase的用户名称匹配

2. Windows的域用户所属的组必须要和Unix上ClearCase用户的主组匹配,须设定CLEARCASE_PRIMARY_GROUP的环境变量,使得它的值等于unix上用户的主组。

验证方法分2步:

1.在windows的机器上,检查CLEARCASE_PRIMARY_GROUP是否已经设置成功。方法是使用creds的工具,这个工具在 C:\Program Files\Rational\ClearCase\etc\utils下,请看下图,这个输出说明了域用户ccinst的主组是testers。


2.检验windows登陆用户与Linux上的ClearCase用户和组是否具有一一对应关系,使用相同目录下的credmap工具来检验,如下图所示,说明 windows上的用户ccinst和组testers在Linux的vob server(vob_svr1)上存在对应的用户和组。

回页首

在Linux机器上面创建Vob Storage Location和Vob

1. 在Linux的机器上,执行下面的命令来创建Vob Storage Location:

cleartool mkstgloc -vob vob_unix /var/tmp/vobs

2. 使用cleartool lsstg来查看是否建立成功。请注意/var/tmp/vobs已经使用samba共享给windows系统了。这样在Windows端就可以访问到共享出来的vob storage locate

3. 创建vob也很简单,可以使用vob的管理员来创建vob,在实验中,是使用ccsint执行下面的命令:

umask 002

(上面的这个操作使得与Vob owner一个组内的用户也可以有读写的权限)

cleartool mkvob -tag /var/tmp/vobs/DataVob_unix -nc -stg vob_unix

4. 使用cleartool lsvob来查看是否建立成功。

5. 由于vob是由统一的vob 的管理员来创建的, 所以vob的owner或者group可能在真正开发之后需要改变,可以使用protectvob的命令来改变vob的owner和group。 cleartool protectvob -chown ccinst -chgrp testers /var/tmp/vobs/DataVob_unix.vbs 由于本实验中不需要改变vob owner了,所以上面的命令不必要进行。

6. 通过cleartool describe vob:/var/tmp/vobs/DataVob_unix 的命令查看vob的属性,同理来创建project vob,唯一不同的是需要添加-ucmproject的参数

cleartool mkvob -tag /var/tmp/vobs/ProjectVob_unix -ucmproject
-nc -stg vob_unix

回页首

在View Server上面创建View Storage Location

登陆到View Server上,可以通过运行GUI来创建view storage localtion:开始 --〉程序 --〉IBM Rational --〉IBM Rational ClearCase --〉Administration --〉Server storage wizard

也可以直接用命令行来创建:

mkstgloc -view view-svr_ccstg_d_views \\view-svr\ccstg_d\views

回页首

从windows端导入Linux的vob tag

在做完前面所讲的步骤后:

* 安装配置samba
* 安装配置ClearCase
* 创建及检验用户信任度
* 创建 vob storage location,创建vob
* 创建 view storage location

现在进入linux/unix和windows之间vob的共享关键步骤:在windows的客户端(DEV-1)使用CC提供的区域同步工具(ClearCase Region Synchronizer),将在Linux所属的region里面建立的vob tag同步到windows所属的region里面。

在没有做同步之前,在windows所属的region(ccwin)里面是看不到在linux上所建立的vob tag的。要将linux/unix上的vob或者view共享给windows的机器使用,需要将他们的tag也同步到windows的region 中。要想做到同步tag,使用Region Synchronizer:开始--〉程序--〉IBM Rationa --〉IBM Rational ClearCase --〉Administration --〉region synchronizer

启动Region Synchronizer的GUI后,windows的用户可以看到linux/unix所属region的vob/view tag。如下图所示,在Import Type中选择VOB tags的选项,就可以看linux/unix所属region(本实验是ccunix)下所有已经创建的vob tag。

选中其中一个希望导入到windows region的vob tag,点击Import,出现下面的界面,在这里需要注意的是Global Storage Path。这个path就是samba共享出来的专门存储vob storage的路径,如下图所示。(一个简单的方法来验证你是否写对了路径:在windows下直接访问该路径,如: \\vob_svr1\vobs\DataVob_unix.vbs ,如果能够访问,则说明是正确的)

Import vob tag成功后,可以在windows的用户端使用cleartool lsvob来查看,该vob tag是否已经列出,如下图所示:

也可以通过administration console的图形界面,来查看vob tag是否已经导入到windows的region中,如下图所示:

Import Linux/Unix上view tag到windows的region中,和上面import vob tag的方法是一样的,本实验并没有涉及从windows访问unix系统上的view(只涉及访问vob),详细过程就不在这里赘述。

回页首

在windows端创建和配置Project

在上面的步骤中,已经把在linux上的两个vob : DataVob_unix和ProjectVob_unix导入到了windows的region中,下面要建立Project。

以ccinst (它是ProjectVob_unix的vob owner) 登陆到windows的客户端(DEV-1),运行clearprojexp,将project explorer调用出来。

在左边的面板上,可以看到ucm project 的vob :ProjectVob_unix已经列出来了,点中component,点击右键,点击Import,Import vob as component的界面出现了,选择DataVob_unix,将其import。

在菜单上选择,File--〉New--〉Project,创建新project的wizard界面出现,如下图,

按照wizard的引导,完成project的创建,注意在第4步,需要选择DataVob_unix作为可更改的component。

这样就完成了project的建立。之后将创建integration view以及development stream/view。这个时候可以以testernt的身份,也就是准备一个开发者的身份加入到新建的project里。以testernt登陆到 windows的客户端(DEV-1),运行clearprojexp,点中新建立的project,点击右键,选择join project,join project的wizard出现了,如下图所示:

按照joing project wizard的引导,就完成了integration view以及development stream/view的建立。注意在选择integration view和development view的storage的步骤中,请选择在view server上面已经建立好的view storage location,这样就很好的利用到了view server。当然你也可以选择将view storage建立在本机上。

回页首

在windows的Client端使用ClearCase进行开发

vob, project, development view都已经建立好了,就可以在windows的客户端进行开发了。以testernt登陆到windows的客户端。启动cc explorer,在view的tag页中,选择project,这样就出现了和这个project相关的所有view ,如图所示:

在development view的空间中, mount上开发所需要的vob tag。在右面的面板上,点中development view tag, 点击右键,选择mount,在mount vob的界面中选择开发需要的vob tag:DataVob_unix。Mount上vob之后,会看到lost+found文件夹,这样就可以对该vob进行操作了。如添加private file,add to source control,checkout,checkin. 下面这张图是添加一个文件到版本控制中,在此过程中,由于是UCM的模式,所以需要指定activity:

回页首

Tips

Case-sensitivity:

可以通过设置来改变case sensitive 的mode。打开控制面板--〉ClearCase--〉MVFS中,这里可以设置mode。

在开发过程中,windows端推荐使用case insensitive mode。 如果启动case preserving,可以保留大小写(如果不启动,创建的所有文件名,MVFS会自动转换为小写的名字)。使用insensitive mode 需要制定一个标准的文件命名规则。如果在一个VOB中,大小写不同的文件名的含义有所不同,那么就需要使用case sensitive mode。

回页首

配置view的text mode:

如果VOB是在Unix系统上创建的,在unix系统上文本文件都是以<LF>作为行结尾标志的,如果从windows系统访问,就需要注意这个tip所说到的问题,反之亦然。

Linux/Unix系统和windows系统处理文本文件中的换行规则有所不同。文本文件中一行在Unix系统中通常以<LF> (line feed)一个字符为结尾;而在windows系统中是以<CR><LF>(carriage return,line feed)两个字符序列为结尾。ClearCase为view提供了text mode用来控制如何处理一行的结尾部分。View可以被创建在以下三种text mode下:

Transparent text mode:不处理任何一行的结尾,也就是什么转换都不做,也叫做Unix mode

Insert_cr text mode:当Unix的客户端使用transparent mode时,在windows端使用该种模式

Strip_cr text mode:当windows的客户端使用transparent mode时,在Unix客户端使用该种模式。

以一个例子说明tmode的功能,在linux机器上创建了DataVob_unix,在linux上创建一个view,mount上这个vob之后,在vob里面添加一个文本文件(文件里面包括有换行),之后在windows端作region synchronize,在windows的view里面mount上这个里面已经存在文件的linux上的vob,打开文件,会看到如下情况。

这个问题如何解决呢,只要在windows端创建view的时候把tmode设置成incert_cr就好了,这样创建的view就可以很好的转换从unix上传过来的文本文件了。设置tmode可以在创建view的gui里面选择,如下图:

从unix端的snapshot访问windows上的vob,如果不将tmode设置为strip_cr的话,打开文本文件也会出现问题,解决的办法是创建view的时候设置tmode为strip_cr。缺省的tmode是Transparent。

回页首

总结一下关于tmode推荐的做法:

如果所有的开发者都是用相同的开发平台(无论是windows还是unix),那么文件行结尾处的处理规则都是相同,创建view时用到的text mode就可以使用transparent text mode。如果大多数开发者都使用Unix平台进行开发,那么在Unix上的开发者创建view时应该使用transparent text mode,而在windows上的开发者应该使用insert_cr text mode。

如果大多数开发者都使用windows平台进行开发,那么在windows上开发者创建view时应该使用transparent text mode,而在Unix上的开发者应该使用strip_cr text mode。

View storage:

虽然本文的实验是配置了一专门的机器作为view server,但是真正开发的时候,从ClearCase的运行性能方面考虑,建议将view storage建立在本地,而不使用这种集中型的view管理。

回页首

总结

本文通过以下步骤,描述了如何在跨平台的环境中对一个Rational ClearCase UCM实例进行操作,包括了以下的内容:

安装配置samba,安装配置ClearCase,创建用户及验证用户信赖关系,创建 vob storage location,创建vob,创建 view storage location,创建 project,加入project,在client端开发。在文章的最后还介绍了一些开发中应该注意的问题,如case sensitivity 的设置,text mode的设置。ClearCase跨平台的操作可能是在实际开发中经常遇到一种情况,希望本文能够给正在或者即将使用ClearCase进行跨平台开发的用户或者学习者提供一个有用的参考。


版权所有:UML软件工程组织