引言
1. 元数据管理视图
2 ClearCase元数据管理
3 总结
上一篇介绍了ClearCase 远程客户端(CCRC)对ClearQuest集成的支持与交付/同步。本篇继续介绍ClearCase远程客户端对元数据的管理功能。
引言
ClearCase为了满足不同需要提供了大量有用的对象,用于补充对象的文件系统信息。这些对象称为元数据,可以用来贯彻,强制或自动化处理研发过程的特定环节,记录附加数据和对象间的关系。元数据种类繁多,主要包括标签,分支,活动,触发器等等。他们都存储在VOB中。本文将从CCRC的应用角度,对ClearCase元数据的管理进行介绍。
1. 元数据管理视图
CCRC中所有对元数据的操作都是通过两个视图完成的:元数据浏览视图和元数据详细信息视图。
1.1 元数据视图窗口
在《ClearCase远程客户端软件在网络环境下的配置应用》第三小节中,大致介绍了一下元数据视图工具,本文将更深入的进行介绍。
在CCRC客户端,打开窗口-〉显示视图-〉ClearCase元数据浏览器导航器和ClearCase元数据浏览器详细信息。如下图所示。
图1
打开的元数据视图实际上是一个改写的project explorer.它和CC导航器及CC详细信息视图很相似。左边是树状的导航结构,右边是列表形式的详细信息。如下图所示:
图2
1.2 元数据视图结构
打开元数据视图窗口后,用户首先需要建立一个和服务器的连接.右键单击空白处在上下文菜单中选择"新建服务器";如果在CC导航器视图中,用户已经创建过连接到服务器上的视图,那么该连接同时会被保存在元数据视图窗口的树形结构中。右键单击处于断开状态的服务器选择"连接"。连接上的服务器会显示符合过滤器要求的VOB.
如上图所示,对于不同类型的VOB,显示的内容是不一样的。普通VOB名称下显示的是标签类型和分支类型。
Pvob下的结构就复杂一些,
在元数据视图窗口中,目前还不能显示项目的组件信息和集成流的基线信息.
在元数据详细视图中,所有的对象信息总是对应着以下4项进行显示:
名称:所选元数据对象的名称
种类:该对象是哪种类型,是项目,目录,流或者是活动
创建时间: 该对象是什么时候创建的
描述: ClearCase的描述,可以是空. 有用户定制的描述,也有系统自动生成的描述.
1.3 过滤设置
对于用户而言,过于繁杂的信息显示也不是一件好事情。有时候会在寻找特定的VOB过程中浪费掉不少时间。通过设置过滤器,可以有效的控制GUI界面的显示信息,给用户返回一个简洁的结果。点击图3中的倒三角,打开过滤器。如图4所示:
图3
图4
过滤器窗口中,用户可以选择过滤的方式(按VOB类型过滤和按字符串过滤VOB)需要说明的是,按VOB类型过滤VOB优先级较高,如果用户同时设定了按VOB类型过滤和按字符串过滤,那么按字符串过滤相当于二次过滤,是在按类型过滤的结果上再次过滤。
回页首
2 ClearCase元数据管理
对于ClearCase中的元数据管理主要包括两个方面,针对UCM CC和Base CC的操作。 对于Base CC来说,元数据管理涉及有:创建分支类型(branch
type);创建标签类型 (label type);对于UCM CC来说,CCRC还增加了在客户端创建基线(baseline),设定推荐基线(recommending
baseline)的功能。
2.1 创建分支类型
用户可以创建所有除了main分支以外的自定义分支类型。
在CCRC客户端,可以右键单击"分支类型",选择"创建分支类型",如图5所示:
图5
创建分支类型窗口弹出。在该窗口,用户可以指定分支名称,范围(全局/普通)并且在文本框添加注释内容。
图6
点击确认按钮,该分支便生成。所有信息会显示在ClearCase元数据浏览器详细信息窗口中。
特别说明一下获取封装类型选项的作用。该选项只有在用户创建全局分支类型的时候,变成可选状态。在下列情况下,需要用到封装类型选项:
- 在administrative vob中创建的全局分支类型与被管理vob中已有的普通分支类型重名;系统会提示该分支名称与下属某个vob中的分支类型重名,该全局分支类型建立失败。如果该分支类型必须要创建为全局范围,这时,可以用到"获取封装的类型"选项。它强制把分支类型转换为全局范围。
创建后用户可以在命令行察看创建的分支类型的详细信息:
cleartool lstype -kind brtype 列出所有分支类型
cleartool lstype -l brtype: <branch_type_name>@\<vob_name>
显示某个分支的详细信息
2.2 创建标签类型
跟创建分支类型相似,点击"标签类型"选择"创建标签类型"。
Vob创建之初不包含标签,在元数据浏览器详细信息中显示"找不到任何对象"。用户需要自己定制合适的标签类型。右键选择"创建标签类型"后,创建标签类型窗口弹出,用户可以指定标签名称,范围以及是否共享该标签。
点击确认按钮,生成该标签。
和分支类型相似,标签类型也有全局和普通之分。
创建后用户可以在命令行察看创建的标签类型的详细信息:
cleartool lstype -kind lbtype 列出所有标签类型
cleartool lstype -l lbtype:<label_type_name>@\<vob_name>
显示某个标签的详细信息
2.3 应用标签
创建好的标签类型可以被方便的应用到元素或vob上。
在元数据详细信息窗口,右键选择标签类型,上下文菜单选择"应用标签"。
图7
应用标签窗口如下:
图8
注意标记选项中的"移动现有标签"。标签是区别于元素,不区别元素的版本。就是说,每一个元素可以拥有多个不重名标签。但是,同一个元素的不同版本不可以拥有同名的标签。
用户如果有需求将标签从版本2移至版本3,是不能直接给版本3打上标签,而是需要选择这个"移动现有标签"来解决问题。
图9和图10是应用"移动现有标签"后,用版本树来表示的效果。可以看到,标签从版本1移到了版本0。
图9
图10
"按照VOB符号连接指示"来应用标签,可以把和Administrative vob有指向关系的所有vob同时应用该标签。
2.4 创建基线
CCRC客户端实现了为组件打基线的功能,极大方便了用户的使用。关于基线的概念和用处,可参见附录内容。
在CCRC客户端,右键单击项目下的集成流,在弹出的上下文菜单中,选择"创建基线"。
图11
在弹出的创建基线窗口(图12),用户可以指定基线名称,添加对该基线的描述,选择基线类型(递增/完整)。该基线所属项目和流属于不可编辑内容。
图12
在服务器端做的设置,一样可以在CCRC的GUI界面上体现出来。
比如:为项目设置了基线名称模版:
cleartool chproject -bln
project, component, date <project name>@\<Pvob name> |
再次在客户端生成该项目基线时,创建基线窗口发生了相应变化,如图13所示:
图13
可以看到基线名替换为"模版名称",内容也变成不可编辑的。
这是在服务器端创建基线的窗口,图14:
图14
对比后可以看出,利用CCRC客户端创建基线的过程和服务器本地有极大的相似性,用户可以很容易的应用CCRC来做以前需要在服务器端才能完成的任务。
2.5 设置推荐基线
CCRC还实现了在客户端设置推荐基线的功能。如图11所示,选择"推荐基线"。
图15
和服务器端的推荐基线窗口比较,在CCRC客户端更为详尽的列出当前基线和要推荐基线。只是目前基线的属性还没有实现,按钮呈灰色。其他功能均已具备。
图16是在服务器端设置推荐基线的窗口:
图16
3 总结
CCRC客户端在不断完善它的功能。对元数据的支持更加坚固了它作为ClearCase的最强大客户端的地位。CCRC客户端目前可以为用户提供如下管理元数据功能:连接Clearcase服务器;浏览元数据;创建分支类型;创建标签类型,应用标签类型;创建基线;推荐基线;
附录:
标签(label)
标签是一个标签类型的实例,它可以被关联到元素的某一个版本上。标签类型(label type)是一个冠名的标记符,用来标识一组相容的元素版本。比如,用户可以创建一种deliver的标签类型,并把这个类型的标签关联到所有相关元素的某一版本上。所以标签本身没有什么语义,需要用户根据实际需要,自行定义。
一般来说,使用组件和基线的UCM用户不需要创建和生成标签。然而,如果一个使用UCM的项目需要共享代码,并且和一个使用base
CC的项目交流的话,就要用到标签。在UCM项目里可以定义一个与某组件基线相关的标签,共享给使用base CC的项目。并且,CC标签可以象一个UCM基线那样被导入。
分支(branch)
将资源添加到ClearCase控制中后,在VOB中便创建了代表该资源的元素。元素具有名为"主分支(main)"的单个分支和该分支上的单个版本。每个元素都从不含内容的零版本开始。元素的后续版本可以在主分支上创建,如果需要,可以创建附加分支比如错误修正分支和下一发行版分支,从而允许沿着主分支和这两个分支进行并行开发。元素的分支结构被称作它的版本树。
基线(baseline)
组件把将被一起开发,集成和发布的文件和目录聚集到一起。组件的一个版本就是一个基线,它标示了组件中包含的每个元素的一个版本。组件基线用来配置工作流,为视图提供信息,以便决定文件和目录的哪些版本被显示。
就像元素有版本一样,组件有基线。当修改一个元素时,创建了这个元素的一个新版本;当修改组件中一个元素时,就创建了组件的一个新基线。工作流把一组组件基线聚集在一起。当在项目的集成流上完成一个基线操作时,便创建了一组被修改组件的基线。下图展示了项目Vob,构件和基线之间的关系:
Administrative vob
在实际应用中,各个Vob不是独立的,封闭的,而是互相联系的,共享的,继承的。对于存在关联关系的Vob,他们的类型对象的管理因为有了Administrative
vob的存在而简单了很多。
成为Administrative vob需要满足的条件:1 该Vob包含至少一个全局范围的类型,比如全局分支类型,全局标签类型;2
至少有一个名为AdminVOB的超链接 (hyperlink) 从其他Vob指向该Vob. 当用户创建了UCM vob, 即Pvob
和 Cvob,他们之间自然就形成了指向关系,从Cvob有一条AdminVOB的超链接指向Pvob。用户也可以用命令行,在两个普通Vob之间建立链接关系:
cleartool mkhlink AdminVOB
vob:<vob_source> vob:<vob_target> |
用户还可以用如下命令察看链接的建立情况:
cleartool describe vob:<vob_name> |
下图所示用户建立的UCM Pvob的链接关系.
那么,建立了指向关系的vob有什么不同,为用户带来什么方便?
这些vob可以共享全局范围的类型。也就是说,上层Administrative vob中建立的所有全局类型,所有指向他的vob中都可以看到并且应用。可以用下图来形象的表示:
|