267
Rational ClearCase Fundamentals for Windows Rational ClearCase Fundamentals for Windows

Clear Case Training

Embed Size (px)

Citation preview

Page 1: Clear Case Training

Rational ClearCase Fundamentals for Windows

Rational ClearCase Fundamentals for Windows

Page 2: Clear Case Training

ClearCaseClearCaseClearCase

大纲大纲

ClearCase如何管理开发对象

ClearCase对象

设置工作空间

Windows环境下ClearCase的使用

开始使用ClearCase使用ClearCase进行软件开发

配置工作空间

使用分支进行并行开发

并行开发集成

ClearCase如何管理开发对象

ClearCase对象

设置工作空间

Windows环境下ClearCase的使用

开始使用ClearCase使用ClearCase进行软件开发

配置工作空间

使用分支进行并行开发

并行开发集成

Page 3: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase如何管理开发对象ClearCase如何管理开发对象

Page 4: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

Page 5: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

描述ClearCase如何管理软件配置

定义工作空间管理,版本控制,build管理和过程控制

描述配置管理对开发过程的影响

通过学习本章,应该能够:

描述ClearCase如何管理软件配置

定义工作空间管理,版本控制,build管理和过程控制

描述配置管理对开发过程的影响

Page 6: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase如何管理开发对象ClearCase如何管理开发对象

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

Page 7: Clear Case Training

ClearCaseClearCaseClearCase

软件配置管理(SCM)软件配置管理(SCM)

SCM包括了所有软件项目的好的工程实践,无论阶段化开发、快速原型或者正在进行的维护活动。

它强调软件的可靠性和质量依赖于:提供识别和控制文档、代码、接口和数据库的结构,以支持所有生命周期的阶段。

支持一种可选的开发/维护的方法论,适应于需求、标准、方针、组织和管理体系。

产生管理和产品信息,涉及基线、变更控制、测试、发布、审计等的状态。

SCM包括了所有软件项目的好的工程实践,无论阶段化开发、快速原型或者正在进行的维护活动。

它强调软件的可靠性和质量依赖于:提供识别和控制文档、代码、接口和数据库的结构,以支持所有生命周期的阶段。

支持一种可选的开发/维护的方法论,适应于需求、标准、方针、组织和管理体系。

产生管理和产品信息,涉及基线、变更控制、测试、发布、审计等的状态。

Page 8: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase功能组ClearCase功能组

Release5.0

建立管理

版本管理

工作空间管理

工艺过程管理

SoftwareDevelopmentEngineering

report 警告

FOO BAR

Page 9: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase如何管理开发对象ClearCase如何管理开发对象

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

Page 10: Clear Case Training

ClearCaseClearCaseClearCase

工作空间管理(Workspace management)工作空间管理(Workspace management)

视图(View)提供了一个工作空间:显示VOB中的开发数据和目录

能够访问视图私有的数据和目录

视图(View)提供了一个工作空间:显示VOB中的开发数据和目录

能够访问视图私有的数据和目录

Page 11: Clear Case Training

ClearCaseClearCaseClearCase

显示选取的版本显示选取的版本

在ClearCase Explorer中显示一个动态视图(Dynamic View) nc_view在ClearCase Explorer中显示一个动态视图(Dynamic View) nc_view

foo.hfoo.c

srctest.txt不是一个ClearCase版本对象

动态视图中元素的版本树显示在上方,眼睛标示着通过这个视图所选取的版本。动态视图中元素的版本树显示在上方,眼睛标示着通过这个视图所选取的版本。

Page 12: Clear Case Training

ClearCaseClearCaseClearCase

视图View视图View

通过使用配置规则(config specs)来访问数据

显示视图私有目录和文件

通过使用不同配置规则的不同视图管理不同的任务

通过标准工具来提供对所有版本化对象的访问

使用本地操作系统习惯

通过使用配置规则(config specs)来访问数据

显示视图私有目录和文件

通过使用不同配置规则的不同视图管理不同的任务

通过标准工具来提供对所有版本化对象的访问

使用本地操作系统习惯

Page 13: Clear Case Training

ClearCaseClearCaseClearCase

两种类型视图两种类型视图

动态连接到共享存储区

虚拟的

随着新的工作被共享产生变化

快照

当连接到共享存储区,容许访问数据

静态的

用户控制何时共享工作

动态连接到共享存储区

虚拟的

随着新的工作被共享产生变化

快照当连接到共享存储区,容许访问数据

静态的

用户控制何时共享工作

Page 14: Clear Case Training

ClearCaseClearCaseClearCase

两种类型视图两种类型视图

VOB

Copy

动态视图( Dynamic View)随时反映VOB变化

只下载必要文件,可节省Local Machine 空间

需要联网操作

快照视图(Snapshot View)可离网操作

控制文件更新时机

Hijack文件自动同期

快照视图(Snapshot View)可离网操作

控制文件更新时机

Hijack文件自动同期

Page 15: Clear Case Training

ClearCaseClearCaseClearCase

动态视图(Dynamic Views)动态视图(Dynamic Views)

对元素透明访问

虚拟文件系统

总是 新的

提供build审计

对元素透明访问

虚拟文件系统

总是 新的

提供build审计

foo.c foo.h src bar.c

VOB

foo.cfoo.c foo.hfoo.h bar.cbar.c test.txttest.txt

src

foo.c test.txt

checkout

虚拟命名空间

Page 16: Clear Case Training

ClearCaseClearCaseClearCase

快照视图(Dynamic Views)快照视图(Dynamic Views)

使用装载规则(load rules)拷贝数据到其它媒介(本地存储区或可移动存储区)

容许在网络断开时工作

提供优化的build性能

使用装载规则(load rules)拷贝数据到其它媒介(本地存储区或可移动存储区)

容许在网络断开时工作

提供优化的build性能 foo.c foo.h src bar.c

VOB

foo.c bar.c

src

foo.h

Connec

ted

Discon

nected

本地存储区

Page 17: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase如何管理开发对象ClearCase如何管理开发对象

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

Page 18: Clear Case Training

ClearCaseClearCaseClearCase

版本控制版本控制

版本化目录和所有文件类型

存储对象在一个Versioned Object Base(VOB)中确保所有元素是只读的

方便的checkout-edit-checkin方式

提供可靠的版本标识

版本化目录和所有文件类型

存储对象在一个Versioned Object Base(VOB)中确保所有元素是只读的

方便的checkout-edit-checkin方式

提供可靠的版本标识

Versioned Object Base(VOB)

1

0

dir 1\main

2

3

1

0

file101.c\main

2

3

4

VERSIONS

ELEMENTS

BETA_01

RLS1.0

RLS2.0LABELS VERSIONS

Page 19: Clear Case Training

ClearCaseClearCaseClearCase

版本控制特点版本控制特点

针对并行开发的无限分支性能

图形化的比较功能和智能归并程序自动地归并没有冲突的变化

针对并行开发的无限分支性能

图形化的比较功能和智能归并程序自动地归并没有冲突的变化

1

0

file101.c\main

2

3

4

Versioned Object Base(VOB)

1

0

2

1

0

2

BRANCHES

MERGE

\rls2_bugfix

\special

Page 20: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase如何管理开发对象ClearCase如何管理开发对象

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

介绍ClearCase工作空间管理

版本控制

Build管理和过程控制

Page 21: Clear Case Training

ClearCaseClearCaseClearCase

建立管理建立管理

ClearCase使用clearmake和omake工具来管理建立(build):

适用于标准的makefile文件

自动监测头文件和源文件的依赖性

保证完全重现每一次build

ClearCase使用clearmake和omake工具来管理建立(build):

适用于标准的makefile文件

自动监测头文件和源文件的依赖性

保证完全重现每一次build

Page 22: Clear Case Training

ClearCaseClearCaseClearCase

建立管理建立管理

共享过去别人建立过的数据

二进制文件的共享与建立高效化的实现

一台建立多台共享

缩短系统建立时间提高建立效率

Page 23: Clear Case Training

ClearCaseClearCaseClearCase

过程控制过程控制

测试结果执行文件 文档资料

呼出

E-mail 通知

report

Tools

项目经理

Trigger

Test#7Test#7

Hyperlink

RelNoteRelNote

开发人员开发人员

Lock 不可变更

旧版本

除系统管理者之外不可访问

特殊权限限制

Page 24: Clear Case Training

ClearCaseClearCaseClearCase

开发人员的使用模型开发人员的使用模型

当开发软件时,你:创建一个私有工作空间

访问软件、文档和工具

对可编辑文件进行工作

共享你的工作成果给其他人

合并其他人的工作成果到你的工作中

状态报告

创建产品

当开发软件时,你:创建一个私有工作空间

访问软件、文档和工具

对可编辑文件进行工作

共享你的工作成果给其他人

合并其他人的工作成果到你的工作中

状态报告

创建产品

Page 25: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase ObjectsClearCase Objects

Page 26: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

理解VOB理解View路径名(Pathnames)

理解VOB理解View路径名(Pathnames)

Page 27: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

解释ClearCase如何存储开发对象

描述访问一个版本化文件或目录的途径

使用路径名

通过学习本章,应该能够:

解释ClearCase如何存储开发对象

描述访问一个版本化文件或目录的途径

使用路径名

Page 28: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase ObjectsClearCase Objects

理解VOB理解View路径名(Pathnames)

理解VOB理解View路径名(Pathnames)

Page 29: Clear Case Training

ClearCaseClearCaseClearCase

什么是一个Element?什么是一个Element?

An element is an object that consists of a set of versions, organized into a version tree.任何Windows文件系统下的文件系统对象都可以作为一个element置于ClearCase版本控制之下

Elements的例子如下:Source filesDirectoriesBinary filesObjects librariesDocuments

An element is an object that consists of a set of versions, organized into a version tree.任何Windows文件系统下的文件系统对象都可以作为一个element置于ClearCase版本控制之下

Elements的例子如下:Source filesDirectoriesBinary filesObjects librariesDocuments

1

0file101.c

\rls2_bugfix

\enhance

2

3

4

5

6

7

0

0 1

21

2

3

0

1

2

\special

BETA_01

RLS1.0

RLS2.0

RLS3.0

\main

Page 30: Clear Case Training

ClearCaseClearCaseClearCase

什么是一个VOB?什么是一个VOB?

ClearCase elements 的只读存储库

存储版本控制数据的网络文件系统资源

存储库可以置于:Windows NTWindows 2000UNIX(包括Red Hat Linux)

ClearCase elements 的只读存储库

存储版本控制数据的网络文件系统资源

存储库可以置于:Windows NTWindows 2000UNIX(包括Red Hat Linux)

Page 31: Clear Case Training

ClearCaseClearCaseClearCase

Projects and VOBsProjects and VOBs

Project

Xmsg.h units.h

parse.c lex.c bar.c foo.c

Project

Y

Versioned ObjectBase 1

Versioned ObjectBase 3

Versioned ObjectBase 2

一个project可以跨越多个VOB多个project可以共享共同的VOB

Page 32: Clear Case Training

ClearCaseClearCaseClearCase

VOB和View交互工作VOB和View交互工作

一个VOB必须进行Mount才能激活,并且或者启动一个Dynamic View,或者装载一个Snapshot ViewVOB与Dynamic View工作在一起,使VOB看起来就像一个目录

VOB与Snapshot View工作在一起,将会把所选择的版本复制到一个指定位置

一个VOB必须进行Mount才能激活,并且或者启动一个Dynamic View,或者装载一个Snapshot ViewVOB与Dynamic View工作在一起,使VOB看起来就像一个目录

VOB与Snapshot View工作在一起,将会把所选择的版本复制到一个指定位置

Page 33: Clear Case Training

ClearCaseClearCaseClearCase

Mounting a VOB Mounting a VOB

激活一个VOB在工作空间中使用

通过VOB的标签(tag)名来访问,标签名是标识VOB的一个独一无二的名字

激活一个VOB在工作空间中使用

通过VOB的标签(tag)名来访问,标签名是标识VOB的一个独一无二的名字

Page 34: Clear Case Training

ClearCaseClearCaseClearCase

Mounting a VOB Mounting a VOB

GUI方式

ClearCase Explorer > Mount VOBWindows Explorer > Mount VOB

CLI方式

c:\> cleartool mount \test_vob

GUI方式

ClearCase Explorer > Mount VOBWindows Explorer > Mount VOB

CLI方式

c:\> cleartool mount \test_vob

Page 35: Clear Case Training

ClearCaseClearCaseClearCase

访问View和VOB 访问View和VOB View显示

hello.c hello.h src util.c

VOB

foo.cfoo.c foo.hfoo.h

src

Page 36: Clear Case Training

ClearCaseClearCaseClearCase

打破平衡打破平衡

建立方针和过程以打破以下两者的平衡:建立方针和过程以打破以下两者的平衡:

访问共享资源

隔离不稳定的变化

访问共享资源

隔离不稳定的变化

Page 37: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase ObjectsClearCase Objects

理解VOB理解View路径名(Pathnames)

理解VOB理解View路径名(Pathnames)

Page 38: Clear Case Training

ClearCaseClearCaseClearCase

ViewsViews

通过配置规则(config specs)访问VOB中的数据

显示视图私有目录和文件

通过使用不同配置规则的不同视图来管理不同的任务

使用本地操作系统的规则

提供对来自标准开发工具的所有版本化对象的访问

进行并行开发

为一个或一组开发人员提供一个工作空间

通过配置规则(config specs)访问VOB中的数据

显示视图私有目录和文件

通过使用不同配置规则的不同视图来管理不同的任务

使用本地操作系统的规则

提供对来自标准开发工具的所有版本化对象的访问

进行并行开发

为一个或一组开发人员提供一个工作空间

Page 39: Clear Case Training

ClearCaseClearCaseClearCase

View做什么?View做什么?

使用配置规则(config specs),选择VOB中目录和文件的版本

为一个或一组开发人员提供工作空间

使开发人员能进行并行开发

使用配置规则(config specs),选择VOB中目录和文件的版本

为一个或一组开发人员提供工作空间

使开发人员能进行并行开发

视图目录视图目录

一个目录元素的版本

一个目录元素的版本

一个文件元素的版本

视图私有文件

Page 40: Clear Case Training

ClearCaseClearCaseClearCase

通过View进行版本选择通过View进行版本选择

foo.c foo.h src bar.c

VOB

foo.cfoo.c foo.hfoo.h bar.cbar.c test.txt

test.txt

src

foo.c test.txt

checkout

虚拟命名空间

动态视图显示 以标准目录树结构显示以标准目录树结构显示

foo.c foo.h src bar.c

VOB

foo.c bar.c

src

foo.h

Conn

ecte

d

Disc

onne

cted

本地存储区

快照视图显示

选择存储在VOB中的元素的版本

使用配置规则

选择存储在VOB中的元素的版本

使用配置规则

Page 41: Clear Case Training

ClearCaseClearCaseClearCase

什么是一个Version?什么是一个Version?

一个element version就是一个置于版本控制之下的文件的一个修订

一个version就是在view中所显示出来的内容

一个version是存储在VOB中的一个element的一部分

一个element version就是一个置于版本控制之下的文件的一个修订

一个version就是在view中所显示出来的内容

一个version是存储在VOB中的一个element的一部分

Page 42: Clear Case Training

ClearCaseClearCaseClearCase

Directory VersionsDirectory Versions

一个directory version就是一个包含了目录下的所有文件元素名字的目录

Directory version可以使用版本扩展名列示出来

一个directory version就是一个包含了目录下的所有文件元素名字的目录

Directory version可以使用版本扩展名列示出来

Page 43: Clear Case Training

ClearCaseClearCaseClearCase

动态视图实现动态视图实现

动态视图存储区目录

db

.s

Admin

View-tagView database filesClearCase internalinformation

Symbolic nameused to reference

the view View-private files(checked-out files,unshared derived objects,temporaryfiles)

Administrative filesAdministrative files that manage connections to other ClearCase objects

Page 44: Clear Case Training

ClearCaseClearCaseClearCase

快照视图实现快照视图实现

快照视图存储区目录

db

Admin

View-tagView database filesClearCase internalinformation

Symbolic nameused to reference

the view

View-private files(checked-out files,unshared derived objects,temporaryfiles)

Administrative filesAdministrative files that manage connections to other ClearCase objects

.s

快照视图根目录

Page 45: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase ObjectsClearCase Objects

理解VOB理解View路径名(Pathnames)

理解VOB理解View路径名(Pathnames)

Page 46: Clear Case Training

ClearCaseClearCaseClearCase

PathnamesPathnames

一个View所选中的版本例如:\main\3z:\test> type hello.cint main() {

printf (“Hello, this is the latest version.\n”);return 0;

}一个非View所选中的版本z:\test> type hello.c@@\main\1main() {

printf(“Hello there, world!\n”);}

一个View所选中的版本例如:\main\3z:\test> type hello.cint main() {

printf (“Hello, this is the latest version.\n”);return 0;

}一个非View所选中的版本z:\test> type hello.c@@\main\1main() {

printf(“Hello there, world!\n”);}

Page 47: Clear Case Training

ClearCaseClearCaseClearCase

Version Extended NameVersion Extended Name

z:\test\hello.c@@ \main\1

z:\test\hello.c —— 标识文件系统路径名

@@ —— 版本标识符号

\main\1 —— 标识版本号

z:\test\hello.c@@ \main\1

z:\test\hello.c —— 标识文件系统路径名

@@ —— 版本标识符号

\main\1 —— 标识版本号

Page 48: Clear Case Training

ClearCaseClearCaseClearCase

设置工作空间设置工作空间

Page 49: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

创建一个视图

激活一个视图

删除一个视图

创建一个视图

激活一个视图

删除一个视图

Page 50: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

创建一个视图

激活一个视图

删除一个视图

通过学习本章,应该能够:

创建一个视图

激活一个视图

删除一个视图

Page 51: Clear Case Training

ClearCaseClearCaseClearCase

设置工作空间设置工作空间

创建一个视图

激活一个视图

删除一个视图

创建一个视图

激活一个视图

删除一个视图

Page 52: Clear Case Training

ClearCaseClearCaseClearCase

工作空间管理配置工作空间管理配置

Local StorageLocal Storage

Registry LocationRegistry Location

License LocationLicense Location

Remote Server VOB Storage

Remote Server VOB Storage

View ServerView Server

Page 53: Clear Case Training

ClearCaseClearCaseClearCase

The View Creation ProcessThe View Creation Process

创建视图存储区目录

在视图注册文件中创建条目,注册视图

启动系统中的view_server进程

使用缺省配置规格进行版本选择

对于快照视图,使用装载规则来下载通过配置规格所选择的版本

创建视图存储区目录

在视图注册文件中创建条目,注册视图

启动系统中的view_server进程

使用缺省配置规格进行版本选择

对于快照视图,使用装载规则来下载通过配置规格所选择的版本

Page 54: Clear Case Training

ClearCaseClearCaseClearCase

Accessing Create ViewAccessing Create View

三种方式:

从开始菜单中进入:开始->程序->Rational ClearCase->Create View从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Create View” icon从命令行(Command Prompt)进入:c:\> cleartool mkview

三种方式:

从开始菜单中进入:开始->程序->Rational ClearCase->Create View从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Create View” icon从命令行(Command Prompt)进入:c:\> cleartool mkview

Page 55: Clear Case Training

ClearCaseClearCaseClearCase

The View Creation WizardThe View Creation Wizard

创建Dynamic Views和Snapshot Views创建Dynamic Views和Snapshot Views

Page 56: Clear Case Training

ClearCaseClearCaseClearCase

Creating a Dynamic ViewCreating a Dynamic View

Page 57: Clear Case Training

ClearCaseClearCaseClearCase

Creating a Snapshot ViewCreating a Snapshot View

Page 58: Clear Case Training

ClearCaseClearCaseClearCase

Load Rules for Snapshot ViewsLoad Rules for Snapshot Views

配置规则的一部分

用以决定哪些元素的版本要被复制到快照视图中

保存check-ins,updates以及其它影响元素的ClearCase操作的轨迹

配置规则的一部分

用以决定哪些元素的版本要被复制到快照视图中

保存check-ins,updates以及其它影响元素的ClearCase操作的轨迹

All elements in a VOBAll elements in a VOB

Single elementSingle element

Page 59: Clear Case Training

ClearCaseClearCaseClearCase

Load the ElementsLoad the Elements

静态视图只能

在对创建视图进行确认后,Choose Elements to Load窗口来显示

选择整个VOB一个element

静态视图只能

在对创建视图进行确认后,Choose Elements to Load窗口来显示

选择整个VOB一个element

Page 60: Clear Case Training

ClearCaseClearCaseClearCase

Creating a Dynamic View: SyntaxCreating a Dynamic View: Syntax

cleartool mkview -tag dynamic-view-tag[-region network-region] [-shareable_dos | -nshareable_dos] [-host hostname -hpath host-stg-pname] dynamic-view-storage-pname

cleartool mkview -tag dynamic-view-tag[-region network-region] [-shareable_dos | -nshareable_dos] [-host hostname -hpath host-stg-pname] dynamic-view-storage-pname

这是节略的命令语法;完全的命令语法,请参见Rational ClearCase Command Reference这是节略的命令语法;完全的命令语法,请参见Rational ClearCase Command Reference

Page 61: Clear Case Training

ClearCaseClearCaseClearCase

创建动态视图举例创建动态视图举例

C:\>cleartool mkview –tag user_view\\scmserver\views\user_view.vws

Created view.Host-local path: scmserver:D:\Views\user_view.vwsGlobal path: \\scmserver\views\user_view.vws

\\scmserver\views必须存在, user_view.vws必须不存在

C:\>cleartool mkview –tag user_view\\scmserver\views\user_view.vws

Created view.Host-local path: scmserver:D:\Views\user_view.vwsGlobal path: \\scmserver\views\user_view.vws

\\scmserver\views必须存在, user_view.vws必须不存在

Page 62: Clear Case Training

ClearCaseClearCaseClearCase

Creating a Snapshot ViewCreating a Snapshot View

cleartool mkview -snapshot[-tag dynamic-view-tag][-tcomment tag-comment][-cachesize size] [-ptime][-stgloc view-stgloc-name|colocated_server [-host hostname-hpath host-snapshot-view-pname-gpath global-snapshot-view-pname]]snapshot-view-pname

cleartool mkview -snapshot[-tag dynamic-view-tag][-tcomment tag-comment][-cachesize size] [-ptime][-stgloc view-stgloc-name|colocated_server [-host hostname-hpath host-snapshot-view-pname-gpath global-snapshot-view-pname]]snapshot-view-pname

这是节略的命令语法;完全的命令语法,请参见Rational ClearCase Command Reference这是节略的命令语法;完全的命令语法,请参见Rational ClearCase Command Reference

Page 63: Clear Case Training

ClearCaseClearCaseClearCase

创建快照视图举例创建快照视图举例

C:\>cleartool mkview -tag zhangyong_sv1 -snapshot -stgloc Views F:\MySnapshotViews\zhangyong_sv1.vws

Created view.Host-local path:

scmserver:D:\Views\PDOMAIN\zhangyong\zhangyong_sv1.vws.vws

Global path: \\scmserver\Views\PDOMAIN\zhangyong\zhangyong_sv1.vws.vws

Created snapshot view directory "F:\MySnapshotViews\zhangyong_sv1.vws".

C:\>cleartool mkview -tag zhangyong_sv1 -snapshot -stgloc Views F:\MySnapshotViews\zhangyong_sv1.vws

Created view.Host-local path:

scmserver:D:\Views\PDOMAIN\zhangyong\zhangyong_sv1.vws.vws

Global path: \\scmserver\Views\PDOMAIN\zhangyong\zhangyong_sv1.vws.vws

Created snapshot view directory "F:\MySnapshotViews\zhangyong_sv1.vws".

Page 64: Clear Case Training

ClearCaseClearCaseClearCase

通常的错误通常的错误

分配给视图的目录不存在

cleartool: Error: Attempt to get location information on " \\scmserver\views\sv" failed:No such file or directory视图存储区已存在cleartool: Error: Unable to create directory "\scmserver\views\sv\user_view.vws": File existscleartool: Error: Unable to create view "\scmserver\views\sv\user_view.vws"所选择的视图标签已经存在cleartool: Error: A registry entry already exists for "user_view"

分配给视图的目录不存在

cleartool: Error: Attempt to get location information on " \\scmserver\views\sv" failed:No such file or directory视图存储区已存在cleartool: Error: Unable to create directory "\scmserver\views\sv\user_view.vws": File existscleartool: Error: Unable to create view "\scmserver\views\sv\user_view.vws"所选择的视图标签已经存在cleartool: Error: A registry entry already exists for "user_view"

Page 65: Clear Case Training

ClearCaseClearCaseClearCase

设置工作空间设置工作空间

创建一个视图

激活一个视图

删除一个视图

创建一个视图

激活一个视图

删除一个视图

Page 66: Clear Case Training

ClearCaseClearCaseClearCase

激活一个视图激活一个视图

浏览View的方式与本地操作系统的目录一样浏览View的方式与本地操作系统的目录一样

Page 67: Clear Case Training

ClearCaseClearCaseClearCase

激活一个动态视图激活一个动态视图

视图的识别是通过网络上唯一的标签名

你可以通过以下方式激活并访问动态视图Create View WizardClearCase Explorer中的Views tab从Windows Explorer中映射一个网络驱动器

ClearCase Explorer中的MVFS驱动器或CLI,net usecleartool 子命令,startview

视图的识别是通过网络上唯一的标签名

你可以通过以下方式激活并访问动态视图Create View WizardClearCase Explorer中的Views tab从Windows Explorer中映射一个网络驱动器

ClearCase Explorer中的MVFS驱动器或CLI,net usecleartool 子命令,startview

Page 68: Clear Case Training

ClearCaseClearCaseClearCase

启动动态视图启动动态视图

从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Start View” icon

从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Start View” icon

从命令行(Command Prompt)进入:c:\> cleartool startview MRP_view

从命令行(Command Prompt)进入:c:\> cleartool startview MRP_view

Page 69: Clear Case Training

ClearCaseClearCaseClearCase

Dynamic Views DriveDynamic Views Drive

当Dynamic View被激活时,可以被映射到一个逻辑驱动器上当Dynamic View被激活时,可以被映射到

一个逻辑驱动器上

Page 70: Clear Case Training

ClearCaseClearCaseClearCase

逻辑视图逻辑视图

F:(view1)

F:(view1)

VOB1 VOB2

M:M:

view1 view2

VOB1 VOB2 VOB1 VOB2

MVFS启动器(缺省M:)包含了每个活动的动态视图的入口

每个动态视图子目录包含了每个活动的VOB

MVFS启动器(缺省M:)包含了每个活动的动态视图的入口

每个动态视图子目录包含了每个活动的VOB

Page 71: Clear Case Training

ClearCaseClearCaseClearCase

显示当前视图显示当前视图

使用cleartool pwv命令显示当前视图使用cleartool pwv命令显示当前视图

cleartool pwv [-short][-wdview | -setview | -root]cleartool pwv [-short][-wdview | -setview | -root]

Z:\> cleartool pwvWorking directory view: MRP_viewSet view: MRP_view

Z:\> cleartool pwvWorking directory view: MRP_viewSet view: MRP_view

Page 72: Clear Case Training

ClearCaseClearCaseClearCase

设置工作空间设置工作空间

创建一个视图

激活一个视图

删除一个视图

创建一个视图

激活一个视图

删除一个视图

Page 73: Clear Case Training

ClearCaseClearCaseClearCase

Removing a ViewRemoving a View

在删除View前,要确保视图私有文件被添加至VOB中,或拷贝到其它处。

删除视图将会:

清除VOB中的View相关信息(checkouts和DO)删除View存储目录

Kill view server processes

注意:不要使用Windows程序直接删除View的存储目录

在删除View前,要确保视图私有文件被添加至VOB中,或拷贝到其它处。

删除视图将会:

清除VOB中的View相关信息(checkouts和DO)删除View存储目录

Kill view server processes

注意:不要使用Windows程序直接删除View的存储目录

Page 74: Clear Case Training

ClearCaseClearCaseClearCase

Remove a ViewRemove a View

两种方式:

从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Remove View” icon

从命令行(Command Prompt)进入:c:\> cleartool rmview –tag MRP_view

两种方式:

从ClearCase Explorer中进入:1. 选中“Toolbox” tab2. 选中“Base ClearCase” tab3. 选择“Remove View” icon

从命令行(Command Prompt)进入:c:\> cleartool rmview –tag MRP_view

Page 75: Clear Case Training

ClearCaseClearCaseClearCase

Remove a ViewRemove a View

从ClearCase Explorer的Views tab中选择Remove View从ClearCase Explorer的Views tab中选择Remove View

Page 76: Clear Case Training

ClearCaseClearCaseClearCase

Windows环境下ClearCase的使用Windows环境下ClearCase的使用

Page 77: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

Page 78: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

使用ClearCase图形用户接口

使用ClearCase命令行接口

获得ClearCase信息

访问ClearCase文档和帮助

通过学习本章,应该能够:

使用ClearCase图形用户接口

使用ClearCase命令行接口

获得ClearCase信息

访问ClearCase文档和帮助

Page 79: Clear Case Training

ClearCaseClearCaseClearCase

Windows环境下ClearCase的使用Windows环境下ClearCase的使用

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

Page 80: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase图形接口使用ClearCase图形接口

许多ClearCase操作都可以在Windows Explorer中直接执行

相关菜单• 依赖于所选择的

ClearCase对象的类型

• 可以通过右键点击所选择的对象

许多ClearCase操作都可以在Windows Explorer中直接执行

相关菜单• 依赖于所选择的

ClearCase对象的类型

• 可以通过右键点击所选择的对象

Page 81: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase ExplorerClearCase Explorer

视图模式

快捷栏

文件夹窗格

浏览器窗格

信息窗格

Page 82: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase Explorer(Toolbox View)ClearCase Explorer(Toolbox View)

工具箱模式

文件夹窗格

浏览器窗格

信息窗格

快捷栏

Page 83: Clear Case Training

ClearCaseClearCaseClearCase

Windows环境下ClearCase的使用Windows环境下ClearCase的使用

使用ClearCase图形界面

使用ClearCase命令行界面

获得ClearCase信息

访问文档和帮助

使用ClearCase图形界面

使用ClearCase命令行界面

获得ClearCase信息

访问文档和帮助

Page 84: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase命令行界面使用ClearCase命令行界面

Cleartool命令包含了一套丰富的子命令集,去访问、操作和修改views和VOBs。

命令行接口

• 给用户一个图形接口的替代方式;

• 对自动脚本很有帮助;

• 提供众多访问、操作和修改views和VOBs的子命令。

Cleartool命令包含了一套丰富的子命令集,去访问、操作和修改views和VOBs。

命令行接口

• 给用户一个图形接口的替代方式;

• 对自动脚本很有帮助;

• 提供众多访问、操作和修改views和VOBs的子命令。

Page 85: Clear Case Training

ClearCaseClearCaseClearCase

命令行界面命令行界面

Page 86: Clear Case Training

ClearCaseClearCaseClearCase

命令行界面命令行界面

Single Command ModeSingle Command Mode

Interactive Command ModeInteractive Command Mode

使用quit或exit可以退出cleartool interactive在cleartool interactive mode下输入字符‘!’可以使用任

何Windows command

使用quit或exit可以退出cleartool interactive在cleartool interactive mode下输入字符‘!’可以使用任

何Windows command

Page 87: Clear Case Training

ClearCaseClearCaseClearCase

使用cleartool命令使用cleartool命令

例子:

使用cleartool ls子命令列出当前目录中的所有元素:

Z:\test\zy\1>cleartool ls1.txt@@\main\1 Rule: \main\LATESTtest@@\main\1 Rule: \main\LATESTZ:\test\zy\1>cleartoolcleartool> ls1.txt@@\main\1 Rule: \main\LATESTtest@@\main\1 Rule: \main\LATESTcleartool> quitZ:\test\zy\1>

例子:

使用cleartool ls子命令列出当前目录中的所有元素:

Z:\test\zy\1>cleartool ls1.txt@@\main\1 Rule: \main\LATESTtest@@\main\1 Rule: \main\LATESTZ:\test\zy\1>cleartoolcleartool> ls1.txt@@\main\1 Rule: \main\LATESTtest@@\main\1 Rule: \main\LATESTcleartool> quitZ:\test\zy\1>

Page 88: Clear Case Training

ClearCaseClearCaseClearCase

命令行界面(CLI)注释选项命令行界面(CLI)注释选项

所有接受注释语句的命令都识别相同的选项:

-c “comment string”为所有创建的事件记录指定一条注释

-cq 提示用户为所有要创建的事件记录输入一条注释

-cqe 对每个要处理的对象,提示输入一条注释

-nc 不输入注释

-cfile pname 指定一个包含注释的文件

所有接受注释语句的命令都识别相同的选项:

-c “comment string”为所有创建的事件记录指定一条注释

-cq 提示用户为所有要创建的事件记录输入一条注释

-cqe 对每个要处理的对象,提示输入一条注释

-nc 不输入注释

-cfile pname 指定一个包含注释的文件

Page 89: Clear Case Training

ClearCaseClearCaseClearCase

更改注释语句更改注释语句

Check in的注释语句可以通过Properties of Version进行修改。Check in的注释语句可以通过Properties of Version进行修改。

Page 90: Clear Case Training

ClearCaseClearCaseClearCase

Windows环境下ClearCase的使用Windows环境下ClearCase的使用

使用ClearCase图形界面

使用ClearCase命令行界面

获得ClearCase信息

访问文档和帮助

使用ClearCase图形界面

使用ClearCase命令行界面

获得ClearCase信息

访问文档和帮助

Page 91: Clear Case Training

ClearCaseClearCaseClearCase

从ClearCase Explorer中显示历史信息从ClearCase Explorer中显示历史信息

Page 92: Clear Case Training

ClearCaseClearCaseClearCase

定制历史信息显示定制历史信息显示

用户可以决定哪些字段要显示。用户可以决定哪些字段要显示。

Page 93: Clear Case Training

ClearCaseClearCaseClearCase

使用CLI显示元素的历史信息使用CLI显示元素的历史信息

Cleartool lshistory 命令:

按照时间逆序列出事件记录

描述影响到VOB数据的ClearCase操作

可以列出有关元素(elements)、分支(branches)、版本(version)和链接(links)的记录

Cleartool lshistory 命令:

按照时间逆序列出事件记录

描述影响到VOB数据的ClearCase操作

可以列出有关元素(elements)、分支(branches)、版本(version)和链接(links)的记录

Page 94: Clear Case Training

ClearCaseClearCaseClearCase

使用CLI显示元素的历史信息使用CLI显示元素的历史信息

Page 95: Clear Case Training

ClearCaseClearCaseClearCase

列出视图私有文件列出视图私有文件

Cleartool lsprivate [-tag view-tag][-invob vob-selector] [-long | -short] [-co][-size] [-age] [-co] [-do] [-other]

Cleartool lsprivate [-tag view-tag][-invob vob-selector] [-long | -short] [-co][-size] [-age] [-co] [-do] [-other]

列出一个视图私有存储区中的所有VOB的对象

视图私有文件、目录和链接

未共享的derived objects元素的checked-out版本

cleartool> lsprivate -invob \test -co\test\1\1.txt [checkedout]Snapshot views不支持该命令

列出一个视图私有存储区中的所有VOB的对象

视图私有文件、目录和链接

未共享的derived objects元素的checked-out版本

cleartool> lsprivate -invob \test -co\test\1\1.txt [checkedout]Snapshot views不支持该命令

Page 96: Clear Case Training

ClearCaseClearCaseClearCase

列出视图私有文件列出视图私有文件

使用cleartool lsview –full –properties命令显示一个view的属性

创建日期和时间

近的访问信息

近的修改信息

近的配置规则更新信息

近的derived objects升级信息

该视图的保护模式

使用cleartool lsview –full –properties命令显示一个view的属性

创建日期和时间

近的访问信息

近的修改信息

近的配置规则更新信息

近的derived objects升级信息

该视图的保护模式

Page 97: Clear Case Training

ClearCaseClearCaseClearCase

Windows环境下ClearCase的使用Windows环境下ClearCase的使用

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

使用ClearCase图形接口

使用ClearCase命令行接口

获得ClearCase信息

访问文档和帮助

Page 98: Clear Case Training

ClearCaseClearCaseClearCase

获得在线帮助获得在线帮助

获得上下文相关帮助可以通过按F1键或Help按钮

可以通过以下方式获得在线帮助

Help菜单

ClearCase程序组中的“ClearCase Help”图标

ClearCase Explorer Help

获得上下文相关帮助可以通过按F1键或Help按钮

可以通过以下方式获得在线帮助

Help菜单

ClearCase程序组中的“ClearCase Help”图标

ClearCase Explorer Help

Page 99: Clear Case Training

ClearCaseClearCaseClearCase

文件:在线帮助手册文件:在线帮助手册

Page 100: Clear Case Training

ClearCaseClearCaseClearCase

开始使用ClearCase开始使用ClearCase

Page 101: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

Page 102: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

描述ClearCase如何表示元素的版本

创建新的文件元素

使用版本扩展名

区分一个ClearCase版本化文件和一个视图私有文件

通过学习本章,应该能够:

描述ClearCase如何表示元素的版本

创建新的文件元素

使用版本扩展名

区分一个ClearCase版本化文件和一个视图私有文件

Page 103: Clear Case Training

ClearCaseClearCaseClearCase

开始使用ClearCase开始使用ClearCase

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

Page 104: Clear Case Training

ClearCaseClearCaseClearCase

版本树(Version Tree)版本树(Version Tree)Hello.c\main

1

0

2V1.1

1

0

2

1

0

21

0

\zy_test

\v1.1_bugs\critical

3

1

0

4

一个版本树是一个元素的分级表现方式,其中所有的版本都被逻辑地组织在一起。

一个版本号表示一个在版本树中的一个唯一位置:hello.c@@\main\v1.1_bugs\critical\2

一个版本树是一个元素的分级表现方式,其中所有的版本都被逻辑地组织在一起。

一个版本号表示一个在版本树中的一个唯一位置:hello.c@@\main\v1.1_bugs\critical\2

Page 105: Clear Case Training

ClearCaseClearCaseClearCase

列出版本化文件列出版本化文件

通常,文件版本以标准Windows文件方式显示:J:\project_hw\src>dirMakefilehello.chello.hutil.c

在幕后,ClearCase将版本映射到那些文件:J:\project_hw\src>cleartool lsMakefile@@\main\2 Rule:\main\LATESThello.c@@\main\3 Rule:\main\LATEST hello.h @@\main\1 Rule:\main\LATEST util.c @@\main\3 Rule:\main\LATEST

通常,文件版本以标准Windows文件方式显示:J:\project_hw\src>dirMakefilehello.chello.hutil.c

在幕后,ClearCase将版本映射到那些文件:J:\project_hw\src>cleartool lsMakefile@@\main\2 Rule:\main\LATESThello.c@@\main\3 Rule:\main\LATEST hello.h @@\main\1 Rule:\main\LATEST util.c @@\main\3 Rule:\main\LATEST

Page 106: Clear Case Training

ClearCaseClearCaseClearCase

CLI 图形选项CLI 图形选项

cleartool lsvtree -graphical [-all] [-nmerge][-nco] [-options pass-through-opts] pname …

cleartool lsvtree -graphical [-all] [-nmerge][-nco] [-options pass-through-opts] pname …

为每一个元素产生一个图形的版本树浏览器

显示所有的版本或只是重要的版本

使用箭头显示一个元素版本间的归并(merges)

举例:J:\project_hw\src\cleartool lsvtree -graphical hello.c

为每一个元素产生一个图形的版本树浏览器

显示所有的版本或只是重要的版本

使用箭头显示一个元素版本间的归并(merges)

举例:J:\project_hw\src\cleartool lsvtree -graphical hello.c

Page 107: Clear Case Training

ClearCaseClearCaseClearCase

定制显示定制显示

可以使用View菜单来定制哪些版本要在版本树浏览器中显示。

可以使用Tools->Options菜单来确定图形/文字的字体和颜色。

可以使用View菜单来定制哪些版本要在版本树浏览器中显示。

可以使用Tools->Options菜单来确定图形/文字的字体和颜色。

Page 108: Clear Case Training

ClearCaseClearCaseClearCase

lsvtree命令lsvtree命令

lsvtree [-nrecurse] [-short] [-all] [-merge][-nco] [-obsolete] [-branch branch-pname] pname …lsvtree [-nrecurse] [-short] [-all] [-merge][-nco] [-obsolete] [-branch branch-pname] pname …

\main

缺省情况下,lsvtree显示所有分支名,但是只有“重要的”元素版本,其定义如下:

所有分支上的 新版本

打标签(Label)的版本

分支点上的版本

一个超链接(hyperlink)两端的版本(主要是归并-Merge)

缺省情况下,lsvtree显示所有分支名,但是只有“重要的”元素版本,其定义如下:

所有分支上的 新版本

打标签(Label)的版本

分支点上的版本

一个超链接(hyperlink)两端的版本(主要是归并-Merge)

1

0

\rel2_bugfix

2

REL2

3

1

0

4 REL3

Page 109: Clear Case Training

ClearCaseClearCaseClearCase

CLI 举例:列出一个版本树CLI 举例:列出一个版本树

J:\test\src>cleartool lsvtree hello.chello.c@@\mainhello.c@@\main\1 (REL2)hello.c@@\main\rel2_bugfixhello.c@@\main\rel2_bugfix\1hello.c@@\main\3 (REL3)

J:\test\src>cleartool lsvtree –all hello.chello.c@@\mainhello.c@@\main\0hello.c@@\main\1 (REL2)hello.c@@\main\rel2_bugfixhello.c@@\main\rel2_bugfix\0 hello.c@@\main\rel2_bugfix\1hello.c@@\main\2 hello.c@@\main\3 (REL3)

J:\test\src>cleartool lsvtree hello.chello.c@@\mainhello.c@@\main\1 (REL2)hello.c@@\main\rel2_bugfixhello.c@@\main\rel2_bugfix\1hello.c@@\main\3 (REL3)

J:\test\src>cleartool lsvtree –all hello.chello.c@@\mainhello.c@@\main\0hello.c@@\main\1 (REL2)hello.c@@\main\rel2_bugfixhello.c@@\main\rel2_bugfix\0 hello.c@@\main\rel2_bugfix\1hello.c@@\main\2 hello.c@@\main\3 (REL3)

Page 110: Clear Case Training

ClearCaseClearCaseClearCase

元素类型(Element Types)元素类型(Element Types)

元素类型决定了一个文件如何存储、取得、比较和归并

有些元素类型可以用相同的格式(HTML/XML)存储,但比较和归并是不同的

每一个元素都有一个分配给它的元素类型

ClearCase提供几种预定义的元素类型

元素类型决定了一个文件如何存储、取得、比较和归并

有些元素类型可以用相同的格式(HTML/XML)存储,但比较和归并是不同的

每一个元素都有一个分配给它的元素类型

ClearCase提供几种预定义的元素类型

Page 111: Clear Case Training

ClearCaseClearCaseClearCase

预定义元素类型预定义元素类型

Page 112: Clear Case Training

ClearCaseClearCaseClearCase

开始使用ClearCase开始使用ClearCase

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

Page 113: Clear Case Training

ClearCaseClearCaseClearCase

创建文件元素创建文件元素

Page 114: Clear Case Training

ClearCaseClearCaseClearCase

创建文件元素创建文件元素

J:\test\src>cleartool co -c "Adding readme file." .Checked out "." from version "\main\3".

J:\test\src>cleartool mkelem -c "Documentation for hello" readme.txtCreated element "readme.txt" (type "text_file").Checked out "readme.txt " from version "\main\0".

J:\test\src>cleartool ci -nc .Checked in "." from version "\main\4".

J:\test\src>cleartool co -c "Adding readme file." .Checked out "." from version "\main\3".

J:\test\src>cleartool mkelem -c "Documentation for hello" readme.txtCreated element "readme.txt" (type "text_file").Checked out "readme.txt " from version "\main\0".

J:\test\src>cleartool ci -nc .Checked in "." from version "\main\4".

Page 115: Clear Case Training

ClearCaseClearCaseClearCase

Adding Existing Files to Source ControlAdding Existing Files to Source Control

Cleartool mkelem

J:\test\src>cleartool mkelem -c "Adding files to source control" foo.c foo.h bar.cCreated element "foo.c" (type "text_file").Checked out "foo.c " from version "\main\0".Created element "foo.h" (type "text_file").Checked out "foo.h" from version "\main\0". Created element "bar.c" (type "text_file").Checked out "bar.c" from version "\main\0".

Cleartool mkelem

J:\test\src>cleartool mkelem -c "Adding files to source control" foo.c foo.h bar.cCreated element "foo.c" (type "text_file").Checked out "foo.c " from version "\main\0".Created element "foo.h" (type "text_file").Checked out "foo.h" from version "\main\0". Created element "bar.c" (type "text_file").Checked out "bar.c" from version "\main\0".

Page 116: Clear Case Training

ClearCaseClearCaseClearCase

Adding Existing Files to Source Control (续)Adding Existing Files to Source Control (续)

Clearfsimport程序能够将文件系统的目录和文件转化为ClearCase元素

Clearexport_ffile和clearimport二者功能的合并

创建新的元素,或将新的版本添加到已存在的元素

例子:J:\test>clearfsimport -recurse d:\code\src .

Clearfsimport程序能够将文件系统的目录和文件转化为ClearCase元素

Clearexport_ffile和clearimport二者功能的合并

创建新的元素,或将新的版本添加到已存在的元素

例子:J:\test>clearfsimport -recurse d:\code\src .

Page 117: Clear Case Training

ClearCaseClearCaseClearCase

开始使用ClearCase开始使用ClearCase

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

Page 118: Clear Case Training

ClearCaseClearCaseClearCase

版本扩展名版本扩展名

能够使你指定一个可能在动态视图中不可见的版本

@@(扩展名符号)指示了一个元素的版本树上的路径指定整数版本hello.h@@\main\rel2_bugfix\9用户定义的版本标签util.c@@REL3特定的ClearCase维护的标签chap1.doc@@\main\LATEST

能够使你指定一个可能在动态视图中不可见的版本

@@(扩展名符号)指示了一个元素的版本树上的路径指定整数版本hello.h@@\main\rel2_bugfix\9用户定义的版本标签util.c@@REL3特定的ClearCase维护的标签chap1.doc@@\main\LATEST

Page 119: Clear Case Training

ClearCaseClearCaseClearCase

PathnamesPathnames

一个View所选中的版本z:\test> type hello.cint main() {

printf (“Hello, this is the version of your view.\n”);return 0;

}一个非View所选中的版本z:\test> type hello.c@@\main\1main() {

printf(“Hello there, world!\n”);}

一个View所选中的版本z:\test> type hello.cint main() {

printf (“Hello, this is the version of your view.\n”);return 0;

}一个非View所选中的版本z:\test> type hello.c@@\main\1main() {

printf(“Hello there, world!\n”);}

Page 120: Clear Case Training

ClearCaseClearCaseClearCase

开始使用ClearCase开始使用ClearCase

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

版本树(Version Trees)创建新的文件元素

版本扩展名

视图私有文件

Page 121: Clear Case Training

ClearCaseClearCaseClearCase

视图私有文件和视图私有目录视图私有文件和视图私有目录

视图私有文件和视图私有目录在VOB的目录中是可见的,但没有被版本化

只能被创建它们的视图所访问

包括临时文件和目录,checked-out文件,DO

视图私有文件和视图私有目录在VOB的目录中是可见的,但没有被版本化

只能被创建它们的视图所访问

包括临时文件和目录,checked-out文件,DO

src

foo.c foo.h

bar.c

src

foo.c foo.h

bar.c

Config Spec

test.txt test.txt

Page 122: Clear Case Training

ClearCaseClearCaseClearCase

列出视图私有文件列出视图私有文件

cleartool lsprivate [-tag view-tag][-invob vob-selector] [-l\ong | -s\hort] [-co][-size] [-age] [-co] [-do] [-oth\er]

cleartool lsprivate [-tag view-tag][-invob vob-selector] [-l\ong | -s\hort] [-co][-size] [-age] [-co] [-do] [-oth\er]

列出一个视图私有存储区中的所有VOB的对象

视图私有文件、目录和链接

未共享的DO元素的checked-out版本

Z:\test\src>cleartool lsprivate\test\src\1\test\src\test.txt\test\src\foo.c [checkedout]此命令不支持快照视图

列出一个视图私有存储区中的所有VOB的对象

视图私有文件、目录和链接

未共享的DO元素的checked-out版本

Z:\test\src>cleartool lsprivate\test\src\1\test\src\test.txt\test\src\foo.c [checkedout]此命令不支持快照视图

Page 123: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

Page 124: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 125: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

检出版本(Checking Out Versions)解释目录元素如何提供结构

改变Checkout状态

比较版本

检入版本(Checking In Versions)解释删除元素的含意

通过学习本章,应该能够:

检出版本(Checking Out Versions)解释目录元素如何提供结构

改变Checkout状态

比较版本

检入版本(Checking In Versions)解释删除元素的含意

Page 126: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 127: Clear Case Training

ClearCaseClearCaseClearCase

元素保护模式元素保护模式

文件元素在检出(checked out)之前是只读的

ClearCase通过附属修改功能来保护VOB中的版本,即使是Administrator

一个动态视图的例子:

Z:\test\src>attrib foo.cR Z:\test\src\foo.c

Z:\test\src>del foo.cZ:\test\src\foo.c拒绝访问。

Z:\test\src>attrib -r foo.c 无法更改属性 - Z:\test\src\foo.c

文件元素在检出(checked out)之前是只读的

ClearCase通过附属修改功能来保护VOB中的版本,即使是Administrator

一个动态视图的例子:

Z:\test\src>attrib foo.cR Z:\test\src\foo.c

Z:\test\src>del foo.cZ:\test\src\foo.c拒绝访问。

Z:\test\src>attrib -r foo.c 无法更改属性 - Z:\test\src\foo.c

Page 128: Clear Case Training

ClearCaseClearCaseClearCase

检出(Checking Out)检出(Checking Out)

对于所有的视图:

得到一个有写权利的文件的拷贝

当使用GUI时,你对目录的变动可以是自动的;当使用CLI时,你必须要check out该目录

对于所有的视图:

得到一个有写权利的文件的拷贝

当使用GUI时,你对目录的变动可以是自动的;当使用CLI时,你必须要check out该目录

Page 129: Clear Case Training

ClearCaseClearCaseClearCase

Checkout之前Checkout之前

src

foo.c foo.h

bar.c

src

foo.c foo.h

bar.c

Config Spec

read onlyread only

read only

Page 130: Clear Case Training

ClearCaseClearCaseClearCase

Checkout过程中发生了什么?Checkout过程中发生了什么?

文件被检出到一个视图,并且在视图私有存储区创建一个可修改的版本

创建一个事件记录

创建一个占位符,作为可能的后续版本

工作在同一个视图的用户能够查看该文件的checked-out版本的内容

文件被检出到一个视图,并且在视图私有存储区创建一个可修改的版本

创建一个事件记录

创建一个占位符,作为可能的后续版本

工作在同一个视图的用户能够查看该文件的checked-out版本的内容

2

3

占位符

Page 131: Clear Case Training

ClearCaseClearCaseClearCase

Check OutCheck Out

Page 132: Clear Case Training

ClearCaseClearCaseClearCase

Reserved Check OutReserved Check Out

缺省选择

Check确认

Page 133: Clear Case Training

ClearCaseClearCaseClearCase

快照视图中的checkout快照视图中的checkout

如果快照视图中的拷贝不是可得到的 新版本,你会得到一个选择。

如果快照视图中的拷贝不是可得到的 新版本,你会得到一个选择。

Page 134: Clear Case Training

ClearCaseClearCaseClearCase

使用CLI进行checkout使用CLI进行checkout

Z:\test\src>cleartool checkout bar.cCheckout comments for "bar.c":Bug fixing.Checked out "bar.c" from version "\main\3".

Z:\test\src>cleartool checkout bar.cCheckout comments for "bar.c":Bug fixing.Checked out "bar.c" from version "\main\3".

Page 135: Clear Case Training

ClearCaseClearCaseClearCase

Checkout之后Checkout之后

src

foo.c

bar.c

src

foo.c foo.h

bar.cConfig Spec

read onlyread only

read\write

foo.h

View Storage

bar.c

Page 136: Clear Case Training

ClearCaseClearCaseClearCase

Finding CheckoutsFinding Checkouts

使用Find Checkout工具能够使用户基于用户定义标准来搜索checkouts。使用Find Checkout工具能够使用户基于用户定义标准来搜索checkouts。

Page 137: Clear Case Training

ClearCaseClearCaseClearCase

Finding Checkouts(续)Finding Checkouts(续)

基于所选择的标准,显示checked out文件的列表。基于所选择的标准,显示checked out文件的列表。

Page 138: Clear Case Training

ClearCaseClearCaseClearCase

确定谁有Checkouts确定谁有Checkouts

-me | -user限定一个指定登录名Z:\test\src>cleartool lsco -me

-cview限定当前视图

-all列出VOB中所有目录的 checkouts,而不仅是当前目录的

-long列出checkout注释和视图存储区

-me | -user限定一个指定登录名Z:\test\src>cleartool lsco -me

-cview限定当前视图

-all列出VOB中所有目录的 checkouts,而不仅是当前目录的

-long列出checkout注释和视图存储区

Page 139: Clear Case Training

ClearCaseClearCaseClearCase

确定谁有Checkouts(续)确定谁有Checkouts(续)

Z:\test\src>cleartool lsco -long07-一月-03.15:42:27 zhangyong.nc_qm@zhangyong

checkout version "bar.c" from \main\3 (reserved)by view: MRP_view

("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")"Bug fixing"

07-一月-03.16:05:36 zhangyong.nc_qm@zhangyongcheckout version "foo.c" from \main\2 (reserved)by view: MRP_view

("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")

Z:\test\src>cleartool lsco -long07-一月-03.15:42:27 zhangyong.nc_qm@zhangyong

checkout version "bar.c" from \main\3 (reserved)by view: MRP_view

("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")"Bug fixing"

07-一月-03.16:05:36 zhangyong.nc_qm@zhangyongcheckout version "foo.c" from \main\2 (reserved)by view: MRP_view

("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")

Page 140: Clear Case Training

ClearCaseClearCaseClearCase

Checkout类型Checkout类型

Reserved checkout:确保在reserved checkout进行checkin或取消(使用Undo checkout)前,没有checkin能进行

只有在没有其它reserved checkout存在时才能够进行

Unreserved checkout可以忽略该版本的其它checkout的状态进行

如果期间没有进行reserved checkout,并且没有其它unreserved checkout已经checked in,可以被checked in如果任何checkin已经发生了,必须进行归并或放弃

Reserved checkout:确保在reserved checkout进行checkin或取消(使用Undo checkout)前,没有checkin能进行

只有在没有其它reserved checkout存在时才能够进行

Unreserved checkout可以忽略该版本的其它checkout的状态进行

如果期间没有进行reserved checkout,并且没有其它unreserved checkout已经checked in,可以被checked in如果任何checkin已经发生了,必须进行归并或放弃

Page 141: Clear Case Training

ClearCaseClearCaseClearCase

Checkout类型(举例)Checkout类型(举例)

UNRESERVED CheckoutUNRESERVED CheckoutRESERVED CheckoutRESERVED Checkout

3

R

Checkout (2)Checkout (2)

3

R

UCheckout

(1)Checkout

(1)Checkout(1)

Checkout(1)

3

4

U

5

Checkout (2)Checkout (2)

Merge(4)

Merge(4)

Checkin (5)Checkin (5)

3

4

Checkin(3)

Checkin(3)

Checkin(2)

Checkin(2)

Page 142: Clear Case Training

ClearCaseClearCaseClearCase

获得一个Unreserved Checkout获得一个Unreserved Checkout

如果一个版本已被checked out reserved,当在另一个视图中进行check out时,将会出现一个确认窗口。

如果一个版本已被checked out reserved,当在另一个视图中进行check out时,将会出现一个确认窗口。

Page 143: Clear Case Training

ClearCaseClearCaseClearCase

单个元素单个元素

版本树浏览器显示了元素的reserved和unreserved checkouts。版本树浏览器显示了元素的reserved和unreserved checkouts。

Page 144: Clear Case Training

ClearCaseClearCaseClearCase

选择Checkout类型选择Checkout类型

你可以通过在Check Out对话框中选中Unreserved if already reserved checkbox来避免这个错误。

你可以通过在Check Out对话框中选中Unreserved if already reserved checkbox来避免这个错误。

Page 145: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 146: Clear Case Training

ClearCaseClearCaseClearCase

创建目录创建目录

Page 147: Clear Case Training

ClearCaseClearCaseClearCase

创建目录 —— CLI创建目录 —— CLI

Z:\test>cleartool co -c "Add include directory" .Checked out ". " from version "\main\2".

Z:\test>cleartool mkdir -c "Directory for include files " include Created directory element "include".Checked out "include" from version "\main\0".

使用CLI添加目录元素,需要将两级目录都check in

Z:\test>cleartool co -c "Add include directory" .Checked out ". " from version "\main\2".

Z:\test>cleartool mkdir -c "Directory for include files " include Created directory element "include".Checked out "include" from version "\main\0".

使用CLI添加目录元素,需要将两级目录都check in

Page 148: Clear Case Training

ClearCaseClearCaseClearCase

改变目录改变目录

对目录命名空间的任何变化都会创建一个新的目录版本

创建一个新的目录版本,必须执行checkout/checkin如果你只是改变一个文件的内容,目录不需要被checked out

对目录命名空间的任何变化都会创建一个新的目录版本

创建一个新的目录版本,必须执行checkout/checkin如果你只是改变一个文件的内容,目录不需要被checked out

Page 149: Clear Case Training

ClearCaseClearCaseClearCase

改变目录的操作改变目录的操作

增加新的文件

重新命名已存在的文件

删除文件

增加新的子目录

移动文件或子目录

增加或删除VOB links

增加新的文件

重新命名已存在的文件

删除文件

增加新的子目录

移动文件或子目录

增加或删除VOB links

Page 150: Clear Case Training

ClearCaseClearCaseClearCase

查看目录版本查看目录版本

与文件元素一样,目录也有版本树

目录版本可以使用版本扩展名列示出来

一个目录版本是一个列表或目录,包含文件元素的名字

与文件元素一样,目录也有版本树

目录版本可以使用版本扩展名列示出来

一个目录版本是一个列表或目录,包含文件元素的名字

Page 151: Clear Case Training

ClearCaseClearCaseClearCase

Cleartool mkdir 命令Cleartool mkdir 命令

cleartool mkdir [-nco] [-c comment | -cfilecomment-file-pname | -cq | -cqe | -nc] dir-pname

cleartool mkdir [-nco] [-c comment | -cfilecomment-file-pname | -cq | -cqe | -nc] dir-pname

缺省情况下,当创建一个目录元素时,如果不指定-nco,cleartool会自动地check out 零版本

Z:\test>cleartool mkdir docCreation comments for "doc":New directory for documentation files.Created directory element "doc".Checked out "doc" from version "\main\0".

缺省情况下,当创建一个目录元素时,如果不指定-nco,cleartool会自动地check out 零版本

Z:\test>cleartool mkdir docCreation comments for "doc":New directory for documentation files.Created directory element "doc".Checked out "doc" from version "\main\0".

Page 152: Clear Case Training

ClearCaseClearCaseClearCase

Orphaned ElementsOrphaned Elements

一个orphaned element是一个与ClearCase目录系统失去连接的元素。

这种情况在一个目录被删除,而其中的文件没有被删除时发生。

一个orphaned element是一个与ClearCase目录系统失去连接的元素。

这种情况在一个目录被删除,而其中的文件没有被删除时发生。

Page 153: Clear Case Training

ClearCaseClearCaseClearCase

移动元素:举例移动元素:举例

在ClearCase Explorer中,你可以使用拖放(drag and drop)来移动元素。在ClearCase Explorer中,你可以使用拖放(drag and drop)来移动元素。

Page 154: Clear Case Training

ClearCaseClearCaseClearCase

移动元素 —— CLI移动元素 —— CLI

Z:\test>cleartool co -nc srcChecked out "src" from version "\main\3".

Z:\test>cleartool co -nc docChecked out "doc" from version "\main\1".

Z:\test>cd src

Z:\test\src>cleartool mv query.doc ..\docMoved "query.doc" to "..\doc\query.doc".

Z:\test>cleartool co -nc srcChecked out "src" from version "\main\3".

Z:\test>cleartool co -nc docChecked out "doc" from version "\main\1".

Z:\test>cd src

Z:\test\src>cleartool mv query.doc ..\docMoved "query.doc" to "..\doc\query.doc".

Page 155: Clear Case Training

ClearCaseClearCaseClearCase

移动元素的结果移动元素的结果

通过src目录的当前版本和前一个版本的比较,可以看到query.doc文件不在列表中了。

通过src目录的当前版本和前一个版本的比较,可以看到query.doc文件不在列表中了。

Page 156: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 157: Clear Case Training

ClearCaseClearCaseClearCase

改变Checkout状态改变Checkout状态

Page 158: Clear Case Training

ClearCaseClearCaseClearCase

改变Checkout状态改变Checkout状态

cleartool reserve [-c comment | -cfile comment-file-pname | -cq | -cqe| -nc] [-cact | -cwork] pname …cleartool reserve [-c comment | -cfile comment-file-pname | -cq | -cqe| -nc] [-cact | -cwork] pname …

cleartool unreserve [-view [hostname:]view-storage-dir-pname [-cact | -cwork] [-c comment | -cfile comment-file-pname | -cq | -cqe | -nc] pname …

cleartool unreserve [-view [hostname:]view-storage-dir-pname [-cact | -cwork] [-c comment | -cfile comment-file-pname | -cq | -cqe | -nc] pname …

要改变checkout的状态,你必须是以下之一:ClearCase管理员

VOB ownerElement ownerElement group member

你还必须进入到checked out的文件所在的视图中,或者使用unreserved命令的-view选项。

要改变checkout的状态,你必须是以下之一:ClearCase管理员

VOB ownerElement ownerElement group member

你还必须进入到checked out的文件所在的视图中,或者使用unreserved命令的-view选项。

Page 159: Clear Case Training

ClearCaseClearCaseClearCase

改变Checkout状态:举例改变Checkout状态:举例

Z:\test\src>cleartool lsco -long08-一月-03.10:24:10 zhangyong.nc_qm@zhangyongcheckout version "bar.c" from \main\3 (unreserved)by view: zhangyong_view3("scmserver:D:\Views\PDOMAIN\zhangyong\zhangyong_view.vws")09-一月-03.13:29:01 zhangyong.nc_qm@zhangyongcheckout version "bar.c" from \main\3 (reserved) by view: MRP_view ("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")

Z:\test\src>cleartool unreserve bar.cChanged checkout to unreserved for "bar.c" branch "\main".

Z:\test\src>cleartool reserve bar.cChanged checkout to reserved for "bar.c" branch "\main".

Z:\test\src>cleartool lsco -long08-一月-03.10:24:10 zhangyong.nc_qm@zhangyongcheckout version "bar.c" from \main\3 (unreserved)by view: zhangyong_view3("scmserver:D:\Views\PDOMAIN\zhangyong\zhangyong_view.vws")09-一月-03.13:29:01 zhangyong.nc_qm@zhangyongcheckout version "bar.c" from \main\3 (reserved) by view: MRP_view ("scmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws")

Z:\test\src>cleartool unreserve bar.cChanged checkout to unreserved for "bar.c" branch "\main".

Z:\test\src>cleartool reserve bar.cChanged checkout to reserved for "bar.c" branch "\main".

Page 160: Clear Case Training

ClearCaseClearCaseClearCase

改变Checkout状态(续)改变Checkout状态(续)

使用-view选项:

Y:\test\src>cleartool unreserve -viewscmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws bar.cChanged checkout to unreserved for "bar.c" branch "\main".

使用-view选项:

Y:\test\src>cleartool unreserve -viewscmserver:D:\MRP_View\PDOMAIN\zhangyong\MRP_view.vws bar.cChanged checkout to unreserved for "bar.c" branch "\main".

Page 161: Clear Case Training

ClearCaseClearCaseClearCase

Canceling a Checkout: Undo CheckoutCanceling a Checkout: Undo Checkout

一旦一个checkout被取消,视图将会选择原来的版本,或先前checked-in版本一旦一个checkout被取消,视图将会选择原来的版本,或先前checked-in版本

Page 162: Clear Case Training

ClearCaseClearCaseClearCase

Checkout被取消之后Checkout被取消之后

src

foo.c

bar.c

src

foo.c foo.h

bar.c

Config Spec

foo.h

View Storage

bar.c.keep

bar.c.keep

Page 163: Clear Case Training

ClearCaseClearCaseClearCase

lost+found目录lost+found目录

在每一个VOB的 高层目录都有

包含了不再属于任何目录版本的所有元素

在每一个VOB的 高层目录都有

包含了不再属于任何目录版本的所有元素

Page 164: Clear Case Training

ClearCaseClearCaseClearCase

Retrieving an Orphaned ElementRetrieving an Orphaned Element

Check out该元素所属的目录

将元素从lost+found中移动到目录中

举例:

Z:\test>cleartool co –nc docZ:\test>cd lost+foundZ:\test\lost+found>cleartool mvquery.doc.96c93d305a5111ceb0200080c880e47f

..\doc\query.docMoved "query.doc.96c93d305a5111ceb0200080c880e47f" to

"..\doc\query.doc".

Check out该元素所属的目录

将元素从lost+found中移动到目录中

举例:

Z:\test>cleartool co –nc docZ:\test>cd lost+foundZ:\test\lost+found>cleartool mvquery.doc.96c93d305a5111ceb0200080c880e47f

..\doc\query.docMoved "query.doc.96c93d305a5111ceb0200080c880e47f" to

"..\doc\query.doc".

Page 165: Clear Case Training

ClearCaseClearCaseClearCase

Lost+found目录:举例Lost+found目录:举例

Z:\test>cleartool co –nc docZ:\test>cleartool mkelem –nc doc\query.doc

<modify query.doc and check it in>Z:\test>cleartool unco doccleartool: Warning: Object "query.doc" no longer referenced.cleartool: Warning: Moving object to vob lost+found directory

as "query.doc.96c93d305a5111ceb0200080c880e47f". Checkout cancelled for "src".

Z:\test>cleartool co –nc docZ:\test>cleartool mkelem –nc doc\query.doc

<modify query.doc and check it in>Z:\test>cleartool unco doccleartool: Warning: Object "query.doc" no longer referenced.cleartool: Warning: Moving object to vob lost+found directory

as "query.doc.96c93d305a5111ceb0200080c880e47f". Checkout cancelled for "src".

Page 166: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 167: Clear Case Training

ClearCaseClearCaseClearCase

版本比较版本比较

将版本进行比较,以确定一个版本和下一个版本直接发生了什么变化。

ClearCase使用图形化和文本的工具来执行文件比较

多可以比较32个文件

可以比较版本化文件和非版本化文件

也可以用来比较Rational Rose Models,XML和HTML文件

将版本进行比较,以确定一个版本和下一个版本直接发生了什么变化。

ClearCase使用图形化和文本的工具来执行文件比较

多可以比较32个文件

可以比较版本化文件和非版本化文件

也可以用来比较Rational Rose Models,XML和HTML文件

Page 168: Clear Case Training

ClearCaseClearCaseClearCase

比较目录版本比较目录版本

比较工具可以使你能够并排地查看同一个目录元素的两个不同版本比较工具可以使你能够并排地查看同一个目录元素的两个不同版本

Page 169: Clear Case Training

ClearCaseClearCaseClearCase

Comparing with Previous VersionsComparing with Previous Versions

使用Compare with Previous Version命令显示一个图形化的文本文件的比较使用Compare with Previous Version命令显示一个图形化的文本文件的比较

Page 170: Clear Case Training

ClearCaseClearCaseClearCase

使用CLI进行文件比较使用CLI进行文件比较

Cleartool diff命令可以 多比较多达32个文本文件Cleartool diff命令可以 多比较多达32个文本文件

Page 171: Clear Case Training

ClearCaseClearCaseClearCase

使用CLI进行文件比较(继续)使用CLI进行文件比较(继续)

Cleartool diff命令可以通过-blank_ignore选项来设置忽略空格

在命令行中,任何cleartool diff -option必须使用(“”)。

Cleartool diff命令可以通过-blank_ignore选项来设置忽略空格

在命令行中,任何cleartool diff -option必须使用(“”)。

Page 172: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 173: Clear Case Training

ClearCaseClearCaseClearCase

Checking in a New VersionChecking in a New Version

增加一个新版本到版本树

从视图存储区中删除文件的可写的拷贝

Checked-in的版本立刻可以被用户从动态视图中得到,快照视图会在下一次update后得到

Checkin操作可以通过以下方式进行:ClearCase Explorer, Windows Explorer, Version Tree Browser, ClearCase supported IDEs, CLI

增加一个新版本到版本树

从视图存储区中删除文件的可写的拷贝

Checked-in的版本立刻可以被用户从动态视图中得到,快照视图会在下一次update后得到

Checkin操作可以通过以下方式进行:ClearCase Explorer, Windows Explorer, Version Tree Browser, ClearCase supported IDEs, CLI

Page 174: Clear Case Training

ClearCaseClearCaseClearCase

Checking in VersionsChecking in Versions

Page 175: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase checkinClearCase checkin

cleartool checkin | ci[-nwarn] [-cr] [-ptime] [-keep | -rm][-from source-pname] [-identical]

cleartool checkin | ci[-nwarn] [-cr] [-ptime] [-keep | -rm][-from source-pname] [-identical]

增加一个新版本到版本树

从视图存储区中删除文件的可写的拷贝

Checked-in的版本立刻可以被所有用户从所有视图中得到(快照视图需要定期进行update)对于文本文件,如果与先前的版本是相同的,新的版本除非使用-identical选项,否则将不会被checked in

举例:

Z:\test\src>cleartool ci -c "fixed bug 209" foo.c

增加一个新版本到版本树

从视图存储区中删除文件的可写的拷贝

Checked-in的版本立刻可以被所有用户从所有视图中得到(快照视图需要定期进行update)对于文本文件,如果与先前的版本是相同的,新的版本除非使用-identical选项,否则将不会被checked in

举例:

Z:\test\src>cleartool ci -c "fixed bug 209" foo.c

Page 176: Clear Case Training

ClearCaseClearCaseClearCase

Object HistoryObject History

一个对象的历史信息被记录在VOB中的事件记录中

一个ClearCase操作,如check out,会引起一个事件记录的创建

事件记录包括事件的信息,如who, what, when, where, 和与事件相关的注释

一个对象的历史信息被记录在VOB中的事件记录中

一个ClearCase操作,如check out,会引起一个事件记录的创建

事件记录包括事件的信息,如who, what, when, where, 和与事件相关的注释

Page 177: Clear Case Training

ClearCaseClearCaseClearCase

使用ClearCase进行软件开发使用ClearCase进行软件开发

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

版本检出(Checking Out Versions)目录元素

改变Checkout状态

版本比较

版本检入(Checking In Versions)删除元素

Page 178: Clear Case Training

ClearCaseClearCaseClearCase

删除一个版本删除一个版本

cleartool rmver [-force] [-xbranch] [-xlabel][-xattr] [-xhlink] [-date][-version version-selector | -vrange low-version high-version][-c comment | -cfile comment-file-pname | -cq | -cqe | -nc] pname…

cleartool rmver [-force] [-xbranch] [-xlabel][-xattr] [-xhlink] [-date][-version version-selector | -vrange low-version high-version][-c comment | -cfile comment-file-pname | -cq | -cqe | -nc] pname…

从VOB中删除元素的一个或多个版本

删除与所删除版本连接的所有metadata删除所删除版本的所有事件记录

举例:

Z:\test\src>cleartool rmver foo.c@@\main\1Removing these version of "foo.c": \main\1Remove versions? [no] yesRemoved version of "foo.c"

从VOB中删除元素的一个或多个版本

删除与所删除版本连接的所有metadata删除所删除版本的所有事件记录

举例:

Z:\test\src>cleartool rmver foo.c@@\main\1Removing these version of "foo.c": \main\1Remove versions? [no] yesRemoved version of "foo.c"

Page 179: Clear Case Training

ClearCaseClearCaseClearCase

Removing Reference to an ElementRemoving Reference to an Element

cleartool rmname [-c comment | -cq | -cqe | -nc] [-nco [ -force]] pname…cleartool rmname [-c comment | -cq | -cqe | -nc] [-nco [ -force]] pname…

从一个目录列表中删除一个元素或VOB symbolic link的名字

该元素仍然在VOB中存在

从一个目录列表中删除一个元素或VOB symbolic link的名字

该元素仍然在VOB中存在

src\main

foo.c\main

bar.c\main

foo.h\main

1

0

1

0

1

0

1

0

2

foo.cfoo.hbar.c

foo.cfoo.h

2

3

2

3

0

1

\bug

reference removed

Page 180: Clear Case Training

ClearCaseClearCaseClearCase

删除一个元素删除一个元素

cleartool rmelem [-force] [-c comment | -cfile comment-file-pname| -cq | -cqe | -nc] pname…cleartool rmelem [-force] [-c comment | -cfile comment-file-pname| -cq | -cqe | -nc] pname…

从VOB中完全删除一个元素

在所有相关目录中删除与它的reference不能删除已经有checked-out版本的元素

必须是element owner, VOB owner, 或ClearCase管理员,才能删除一个元素

从VOB中完全删除一个元素

在所有相关目录中删除与它的reference不能删除已经有checked-out版本的元素

必须是element owner, VOB owner, 或ClearCase管理员,才能删除一个元素

1

0

src

2

bar.c

bar.c

1

0

bar.c

2

Page 181: Clear Case Training

ClearCaseClearCaseClearCase

删除一个元素:举例删除一个元素:举例

Z:\test\doc>cleartool rmelem query.docCAUTION! This will destroy the element, all its branches and versions,including all data, meta-data and history, and will remove the elementfrom all directory versions that now contain it. Once you destroy theelement, there will be no way to restore it to its current state.If you want to preserve the element, but remove references to it fromfuture directory versions, use the "rmname" command.

Element "query.doc" has 1 branches, 2 versions, and is enteredin 1 directory versions.Destroy element? [no] yesRemoved element "query.doc".

Z:\test\doc>cleartool rmelem query.docCAUTION! This will destroy the element, all its branches and versions,including all data, meta-data and history, and will remove the elementfrom all directory versions that now contain it. Once you destroy theelement, there will be no way to restore it to its current state.If you want to preserve the element, but remove references to it fromfuture directory versions, use the "rmname" command.

Element "query.doc" has 1 branches, 2 versions, and is enteredin 1 directory versions.Destroy element? [no] yesRemoved element "query.doc".

Page 182: Clear Case Training

ClearCaseClearCaseClearCase

配置工作空间配置工作空间

Page 183: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

配置规则(Configuration Specifications)查看配置规则

改变规则

配置规则(Configuration Specifications)查看配置规则

改变规则

Page 184: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

解释配置规格是如何选取版本的

显示配置规格

修改配置规格

通过学习本章,应该能够:

解释配置规格是如何选取版本的

显示配置规格

修改配置规格

Page 185: Clear Case Training

ClearCaseClearCaseClearCase

配置工作空间配置工作空间

配置规格(Configuration Specifications)查看配置规格

改变规则

配置规格(Configuration Specifications)查看配置规格

改变规则

Page 186: Clear Case Training

ClearCaseClearCaseClearCase

配置规格(Config Spec)配置规格(Config Spec)

每个视图都有自己的配置规格

决定VOB中元素的哪些版本在视图中是可见的

包含一套顺序的规则,通过动态视图的view_server process不断地被使用

快照视图的规则与动态视图是一样的,除了使用装载规则(load rules)快照视图不是动态地使用配置规格,只有在update和load时使用

每个视图都有自己的配置规格

决定VOB中元素的哪些版本在视图中是可见的

包含一套顺序的规则,通过动态视图的view_server process不断地被使用

快照视图的规则与动态视图是一样的,除了使用装载规则(load rules)快照视图不是动态地使用配置规格,只有在update和load时使用

Page 187: Clear Case Training

ClearCaseClearCaseClearCase

配置规则(Config Spec Rules)配置规则(Config Spec Rules)

对每个元素:

规则是按照出现的顺序来使用的

匹配一个版本的第一个规则就是所使用的规则

对每个元素:

规则是按照出现的顺序来使用的

匹配一个版本的第一个规则就是所使用的规则

Default config spec:element * CHECKEDOUTelement * \main\LATEST

Default config spec:element * CHECKEDOUTelement * \main\LATEST

Page 188: Clear Case Training

ClearCaseClearCaseClearCase

配置规则定义配置规则定义

<scope> <pattern> <version-selector>element * CHECKEDOUTelement * \main\LATEST

<scope> <pattern> <version-selector>element * CHECKEDOUTelement * \main\LATEST

<scope> = 应用规则的元素的类型

如: element, element -file, element -directory,element –eltype text_file

<pattern> = 元素的名字模式,可以包括通配符。

如:*, *.c, \test\…\*.c<version-selector>

如果scope和pattern匹配时所选择的版本

可以是动态的,如 CHECKEDOUT, \main\LATEST可以是静态的,如 \main\4

<scope> = 应用规则的元素的类型

如: element, element -file, element -directory,element –eltype text_file

<pattern> = 元素的名字模式,可以包括通配符。

如:*, *.c, \test\…\*.c<version-selector>

如果scope和pattern匹配时所选择的版本

可以是动态的,如 CHECKEDOUT, \main\LATEST可以是静态的,如 \main\4

Page 189: Clear Case Training

ClearCaseClearCaseClearCase

配置规格举例配置规格举例

缺省配置规格:element * CHECKEDOUTelement * \main\LATEST

查看一个特定的发布版本:element * REL2

维护工作:element * CHECKEDOUTelement * \main\rel_bugfix\LATESTelement * REL2 –mkbranch rel2_bugfix

缺省配置规格:element * CHECKEDOUTelement * \main\LATEST

查看一个特定的发布版本:element * REL2

维护工作:element * CHECKEDOUTelement * \main\rel_bugfix\LATESTelement * REL2 –mkbranch rel2_bugfix

Page 190: Clear Case Training

ClearCaseClearCaseClearCase

配置规格举例(续)配置规格举例(续)

修改标签LATEST的含意:element *.h \main\LATEST -time now element * \main\LATEST -time 22-Feb-01.9:00

选择一个特殊时间的版本:element * \main\LATEST -time Friday

不选择元素的checkouts:element * REL1 –nocheckout

激活自动创建分支程序:element * REL2 -mkbranch rel2_bugfix

修改标签LATEST的含意:element *.h \main\LATEST -time now element * \main\LATEST -time 22-Feb-01.9:00

选择一个特殊时间的版本:element * \main\LATEST -time Friday

不选择元素的checkouts:element * REL1 –nocheckout

激活自动创建分支程序:element * REL2 -mkbranch rel2_bugfix

Page 191: Clear Case Training

ClearCaseClearCaseClearCase

特殊规则特殊规则

配制规格中的包含规则容许不同的用户共享同一套规则,同时维护他们自己的视图的私有性:element * CHECKEDOUT # the following rules were set up by user1include \\user1\views\users\global\config_spec

一个时间规则修改了后续规则的LATEST的含意:element * CHECKEDOUTtime Tuesday.9:00 element * \main\rel2_bugfix\LATESTelement * \main\LATEST

配制规格中的包含规则容许不同的用户共享同一套规则,同时维护他们自己的视图的私有性:element * CHECKEDOUT # the following rules were set up by user1include \\user1\views\users\global\config_spec

一个时间规则修改了后续规则的LATEST的含意:element * CHECKEDOUTtime Tuesday.9:00 element * \main\rel2_bugfix\LATESTelement * \main\LATEST

Page 192: Clear Case Training

ClearCaseClearCaseClearCase

视图私有文件视图私有文件

除了checked-out版本,视图私有文件不受配置规则影响。除了checked-out版本,视图私有文件不受配置规则影响。

src

foo.c

bar.c

src

foo.c foo.h

bar.cfoo.h

View Storage

bar.c.keep

bar.c.keep

View

Page 193: Clear Case Training

ClearCaseClearCaseClearCase

配置工作空间配置工作空间

配置规格(Configuration Specifications)查看配置规格

改变规则

配置规格(Configuration Specifications)查看配置规格

改变规则

Page 194: Clear Case Training

ClearCaseClearCaseClearCase

查看配置规格查看配置规格

cleartool catcs [-tag view-tag]cleartool catcs [-tag view-tag]

举例:

列出当前视图的配置规格:Z:\test\src>cleartool catcselement * CHECKEDOUTelement * /main/LATEST

列出另一个视图的配置规格:Z:\test\src>cleartool catcs -tag NC2_viewelement * NC2.0

举例:

列出当前视图的配置规格:Z:\test\src>cleartool catcselement * CHECKEDOUTelement * /main/LATEST

列出另一个视图的配置规格:Z:\test\src>cleartool catcs -tag NC2_viewelement * NC2.0

Page 195: Clear Case Training

ClearCaseClearCaseClearCase

Cleartool catcs 命令Cleartool catcs 命令

Z:\test\src> cleartool catcselement * CHECKEDOUTelement * /main/LATEST

Z:\test\src> cleartool catcselement * CHECKEDOUTelement * /main/LATEST

src

foo.c

src

foo.c foo.h

bar.c

foo.h

View Storage

bar.c

bar.c

View

Page 196: Clear Case Training

ClearCaseClearCaseClearCase

显示和编辑配置规格显示和编辑配置规格

选择Properties of View菜单来查看配置规格

选择Edit按钮来编辑配置规格

选择Properties of View菜单来查看配置规格

选择Edit按钮来编辑配置规格

Page 197: Clear Case Training

ClearCaseClearCaseClearCase

错误检测错误检测

ClearCase检测配置规格中的语法错误。ClearCase检测配置规格中的语法错误。

Page 198: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase 详细资料ClearCase 详细资料

Page 199: Clear Case Training

ClearCaseClearCaseClearCase

配置工作空间配置工作空间

配置规格(Configuration Specifications)查看配置规格

改变规则

配置规格(Configuration Specifications)查看配置规格

改变规则

Page 200: Clear Case Training

ClearCaseClearCaseClearCase

重置配置规格重置配置规格

使用cleartool setcs命令改变视图的配置规格:

使用一个用户定义的文件替代当前的配置规格

-default选项将配置规格设置成缺省配置规格

-current选项使view_server重新使用时间规则,重读包含文件

举例:X:\>cleartool setcs cspec_REL2X:\>cleartool setcs -default

使用cleartool setcs命令改变视图的配置规格:

使用一个用户定义的文件替代当前的配置规格

-default选项将配置规格设置成缺省配置规格

-current选项使view_server重新使用时间规则,重读包含文件

举例:X:\>cleartool setcs cspec_REL2X:\>cleartool setcs -default

Page 201: Clear Case Training

ClearCaseClearCaseClearCase

修改配置规格修改配置规格

cleartool edcs [-tag view-tag] [pname]cleartool edcs [-tag view-tag] [pname]

激活EDITOR环境变量所指定的编辑器

退出编辑器时,在将配置规格应用到视

激活EDITOR环境变量所指定的编辑器

退出编辑器时,在将配置规格应用到视图前,会执行语法和语义检测图前,会执行语法和语义检测

cleartool setcs [-tag view-tag] [pname]{ -current | -default | pname }

cleartool setcs [-tag view-tag] [pname]{ -current | -default | pname }

将配置规格设置成一个ASCII文件或缺省

也经常设置时间规则来使用当前时间

将配置规格设置成一个ASCII文件或缺省

也经常设置时间规则来使用当前时间

Page 202: Clear Case Training

ClearCaseClearCaseClearCase

使用cleartool edcs修改配置规格使用cleartool edcs修改配置规格

X:\> cleartool edcs

编辑配置规格如下:element * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 –mkbranch rel2_bugfix

退出编辑任务:Set config spec for view "test_view"? [yes] yesX:\> cleartool catcselement * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 -mkbranch rel2_bugfix

X:\> cleartool edcs

编辑配置规格如下:element * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 –mkbranch rel2_bugfix

退出编辑任务:Set config spec for view "test_view"? [yes] yesX:\> cleartool catcselement * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 -mkbranch rel2_bugfix

Page 203: Clear Case Training

ClearCaseClearCaseClearCase

验证View验证View

使用cleartool ls来验证REL2的版本是否被视图所选中:

X:\> cleartool lsfoo.c@@\main\4 Rule: REL2 -rel2_bugfixfoo.h@@\main\3 Rule: REL2 -rel2_bugfixbar.c@@\main\5 Rule: REL2 -rel2_bugfix

只会对指定的rel2_bugfix分支上的元素版本进行改变

使用cleartool ls来验证REL2的版本是否被视图所选中:

X:\> cleartool lsfoo.c@@\main\4 Rule: REL2 -rel2_bugfixfoo.h@@\main\3 Rule: REL2 -rel2_bugfixbar.c@@\main\5 Rule: REL2 -rel2_bugfix

只会对指定的rel2_bugfix分支上的元素版本进行改变

Page 204: Clear Case Training

ClearCaseClearCaseClearCase

ClearCase Element OptionsClearCase Element Options

Page 205: Clear Case Training

ClearCaseClearCaseClearCase

查看选择的规则查看选择的规则

Page 206: Clear Case Training

ClearCaseClearCaseClearCase

使用分支进行并行开发使用分支进行并行开发

Page 207: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

Page 208: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

描述ClearCase如何使用分支进行并行开发

创建分支类型和实例

自动创建一个分支

解释View Profile的用途

通过学习本章,应该能够:

描述ClearCase如何使用分支进行并行开发

创建分支类型和实例

自动创建一个分支

解释View Profile的用途

Page 209: Clear Case Training

ClearCaseClearCaseClearCase

使用分支进行并行开发使用分支进行并行开发

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

Page 210: Clear Case Training

ClearCaseClearCaseClearCase

并行开发并行开发

容许多个不同项目在同一时间使用相同的数据来源

控制工作的公共或私有特性

隔离变化临时的,如还未被测试的新功能

永久的,如过时发布版本的一个缺陷修复

组织障碍——在集成期间开发能够进行

容许多个不同项目在同一时间使用相同的数据来源

控制工作的公共或私有特性

隔离变化临时的,如还未被测试的新功能

永久的,如过时发布版本的一个缺陷修复

组织障碍——在集成期间开发能够进行

Page 211: Clear Case Training

ClearCaseClearCaseClearCase

在分支上进行工作在分支上进行工作

Page 212: Clear Case Training

ClearCaseClearCaseClearCase

使用分支进行并行开发使用分支进行并行开发

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

Page 213: Clear Case Training

ClearCaseClearCaseClearCase

分支类型分支类型

一个用户定义的名字,将会形成版本树中的一个唯一路径名

分支类型的实例能够并且应当被不同的元素来使用

遵循ClearCase的两步元数据范例:1.声明类型,然后

2.创建该类型的一个或多个实例

用于并行开发的分支类型的例子:rel2_bugfix 一个发布版本的缺陷修复zhangyong_exp 一个用户实验性的工作wizard_features 特性的开发

一个用户定义的名字,将会形成版本树中的一个唯一路径名

分支类型的实例能够并且应当被不同的元素来使用

遵循ClearCase的两步元数据范例:1.声明类型,然后

2.创建该类型的一个或多个实例

用于并行开发的分支类型的例子:rel2_bugfix 一个发布版本的缺陷修复zhangyong_exp 一个用户实验性的工作wizard_features 特性的开发

Page 214: Clear Case Training

ClearCaseClearCaseClearCase

为什么需要类型?为什么需要类型?

容许变化跨越多个逻辑分类在一起的元素在VOB中建立一致性

集中对分支名的管理控制在开发过程中开发和关闭分支

容许变化跨越多个逻辑分类在一起的元素在VOB中建立一致性

集中对分支名的管理控制在开发过程中开发和关闭分支

foo.c\main

\bugfix

\pvt

bar.c\main

每个版本树都有一个main分支

\bugfix

使用类型/实例方法一致的树结构

bugfix

Page 215: Clear Case Training

ClearCaseClearCaseClearCase

分支类型命名规则分支类型命名规则

必须在版本树上形成一个唯一路径名(如\main\bugs\bug404)不能有一个整数名

不能和一个标签类型有相同的名字分支类型和标签类型共享同一个命名空间

建立一些命名规则是明智的做法,如branch_names, LABEL_NAMES

必须在版本树上形成一个唯一路径名(如\main\bugs\bug404)不能有一个整数名

不能和一个标签类型有相同的名字分支类型和标签类型共享同一个命名空间

建立一些命名规则是明智的做法,如branch_names, LABEL_NAMES

每个版本树都有一个main分支

1

0

用户可以创建任意数量的子分支

2

\enh1

0

2

1

0

21

0

\bugs

\bug417

\bug404

3

1

0

4

Page 216: Clear Case Training

ClearCaseClearCaseClearCase

查看分支类型查看分支类型

使用Type Explorer列出、创建、重命名、修改和查看分支类型的属性使用Type Explorer列出、创建、重命名、修改和查看分支类型的属性

Page 217: Clear Case Training

ClearCaseClearCaseClearCase

声明一个新的分支类型声明一个新的分支类型

通过Type Explorer可以创建新的分支类型通过Type Explorer可以创建新的分支类型

Page 218: Clear Case Training

ClearCaseClearCaseClearCase

改变约束改变约束

在分支的属性窗口的Type Details tab容许你改变约束——在一个元素上容许一个分支类型的多个实例,或限制每个元素只能使用一个分支类型的一个实例(缺省)

在分支的属性窗口的Type Details tab容许你改变约束——在一个元素上容许一个分支类型的多个实例,或限制每个元素只能使用一个分支类型的一个实例(缺省)

Page 219: Clear Case Training

ClearCaseClearCaseClearCase

创建一个实例创建一个实例

在声明一个分支类型后,你可以将该分支应用到VOB的元素版本上:在配置规格中的-mkbranch子句,通过以下方式实现:• 明确地编辑配置规格,添加规则

• 将一个视图与一个视图Profile联系起来

• 设置视图使用一个私有分支

cleartool mkbranch命令

使用配置规格自动进行分支创建,这是实例化元素上的分支的推荐方法

在声明一个分支类型后,你可以将该分支应用到VOB的元素版本上:在配置规格中的-mkbranch子句,通过以下方式实现:• 明确地编辑配置规格,添加规则

• 将一个视图与一个视图Profile联系起来

• 设置视图使用一个私有分支

cleartool mkbranch命令

使用配置规格自动进行分支创建,这是实例化元素上的分支的推荐方法

Page 220: Clear Case Training

ClearCaseClearCaseClearCase

使用分支进行并行开发使用分支进行并行开发

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

Page 221: Clear Case Training

ClearCaseClearCaseClearCase

-mkbranch子句-mkbranch子句

配置规格中的-mkbranch子句在checkout时自动创建分支Rule 1: element * CHECKEDOUTRule 2: element * \main\rel2_bugfix\LATESTRule 3: element * REL2 -mkbranch rel2_bugfixRule #3的解释如下:选择标签REL2标记的一个元素的版本

在checkout REL2版本时,从REL2版本自动创建rel2_bugfix分支

Checkout 分支rel2_bugfix上的0版本

配置规格中的-mkbranch子句在checkout时自动创建分支Rule 1: element * CHECKEDOUTRule 2: element * \main\rel2_bugfix\LATESTRule 3: element * REL2 -mkbranch rel2_bugfixRule #3的解释如下:选择标签REL2标记的一个元素的版本

在checkout REL2版本时,从REL2版本自动创建rel2_bugfix分支

Checkout 分支rel2_bugfix上的0版本

Page 222: Clear Case Training

ClearCaseClearCaseClearCase

自动创建一个分支自动创建一个分支

更改配置规格,使得在check out带有REL2标签的元素时,创建一个分支

配置规则选择带有REL2标签的版本,并指示它将变成一个checkout时的分支点

更改配置规格,使得在check out带有REL2标签的元素时,创建一个分支

配置规则选择带有REL2标签的版本,并指示它将变成一个checkout时的分支点

element * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 -mkbranch rel2_bugfix

element * CHECKEDOUTelement * \main\rel2_bugfix\LATESTelement * REL2 -mkbranch rel2_bugfix

Page 223: Clear Case Training

ClearCaseClearCaseClearCase

自动创建一个分支(续)自动创建一个分支(续)

Check out 该文件

选中的版本现在是rel2_bugfix分支上的CHECKEDOUT版本

Check out 该文件

选中的版本现在是rel2_bugfix分支上的CHECKEDOUT版本

Page 224: Clear Case Training

ClearCaseClearCaseClearCase

自动创建一个分支(续)自动创建一个分支(续)

版本树浏览器显示了新的分支和checked-out版本版本树浏览器显示了新的分支和checked-out版本

Page 225: Clear Case Training

ClearCaseClearCaseClearCase

多级自动分支多级自动分支

配置规格可以包含一个“层叠”的-mkbranch规则:Rule 1: element * CHECKEDOUTRule 2: element *

\main\rel2_bugfix\bug_404\LATESTRule 3: element * \main\rel2_bugfix\LATEST

-mkbranch bug_404 Rule 4: element * REL2 -mkbranch rel2_bugfixCheckout连续创建分支,直到新分支上的版本0不被一条-mkbranch子句所选中

配置规格可以包含一个“层叠”的-mkbranch规则:Rule 1: element * CHECKEDOUTRule 2: element *

\main\rel2_bugfix\bug_404\LATESTRule 3: element * \main\rel2_bugfix\LATEST

-mkbranch bug_404 Rule 4: element * REL2 -mkbranch rel2_bugfixCheckout连续创建分支,直到新分支上的版本0不被一条-mkbranch子句所选中

Page 226: Clear Case Training

ClearCaseClearCaseClearCase

多级自动分支多级自动分支

Page 227: Clear Case Training

ClearCaseClearCaseClearCase

使用分支进行并行开发使用分支进行并行开发

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

并行开发

创建分支类型和实例

自动创建分支

使用视图Profile

Page 228: Clear Case Training

ClearCaseClearCaseClearCase

View ProfilesView Profiles

密封一个开发团队所共享的ClearCase配置模式

自动处理多个并行开发任务

促进ClearCase有效使用的特定模式

保护开发人员免于处理配置规格和分支创建的细节

密封一个开发团队所共享的ClearCase配置模式

自动处理多个并行开发任务

促进ClearCase有效使用的特定模式

保护开发人员免于处理配置规格和分支创建的细节

注意:

View Profiles 在ClearCase LT是不能使用的

注意:

View Profiles 在ClearCase LT是不能使用的

Page 229: Clear Case Training

ClearCaseClearCaseClearCase

使用View Profiles并行开发使用View Profiles并行开发

项目经理创建一个View Profile项目团队成员使用他们各自的视图与View Profile连接,确保:

配置规格选择正确的版本

当视图被激活时,VOBs被自动地激活

当View Profile更新时,视图配置规格自动地更新

团队成员可以创建私有分支,将他们的工作与其他人的工作隔离开来

团队成员将私有分支的工作归并到集成分支上

项目经理创建一个View Profile项目团队成员使用他们各自的视图与View Profile连接,确保:

配置规格选择正确的版本

当视图被激活时,VOBs被自动地激活

当View Profile更新时,视图配置规格自动地更新

团队成员可以创建私有分支,将他们的工作与其他人的工作隔离开来

团队成员将私有分支的工作归并到集成分支上

Page 230: Clear Case Training

ClearCaseClearCaseClearCase

连接已存在的视图与View Profile连接已存在的视图与View Profile

一个已存在的视图可以与一个View Profile连接一个已存在的视图可以与一个View Profile连接

Page 231: Clear Case Training

ClearCaseClearCaseClearCase

连接新的视图与View Profile连接新的视图与View Profile

在视图创建过程中,View Creation Wizard容许你浏览一个View Profiles列表,选择一个和你的工作相关的View Profile

在视图创建过程中,View Creation Wizard容许你浏览一个View Profiles列表,选择一个和你的工作相关的View Profile

Page 232: Clear Case Training

ClearCaseClearCaseClearCase

并行开发集成并行开发集成

Page 233: Clear Case Training

ClearCaseClearCaseClearCase

主题主题

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 234: Clear Case Training

ClearCaseClearCaseClearCase

目标目标

通过学习本章,应该能够:

描述ClearCase的归并逻辑

归并目录和文件元素

执行特殊的归并类型

使用Merge Manager进行自动归并

注解代码和产生报告

通过学习本章,应该能够:

描述ClearCase的归并逻辑

归并目录和文件元素

执行特殊的归并类型

使用Merge Manager进行自动归并

注解代码和产生报告

Page 235: Clear Case Training

ClearCaseClearCaseClearCase

并行开发集成并行开发集成

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 236: Clear Case Training

ClearCaseClearCaseClearCase

归并(Merging):概述归并(Merging):概述

对元素的改变很容易地从一个分支传播到另一个分支

ClearCase提供一套丰富的工具集,使归并规程变得较少手动操作

在两个分支间的归并执行后,开发工作可以继续在两个分支上进行

在将来的分支上没有限制,包括频率和方向

对元素的改变很容易地从一个分支传播到另一个分支

ClearCase提供一套丰富的工具集,使归并规程变得较少手动操作

在两个分支间的归并执行后,开发工作可以继续在两个分支上进行

在将来的分支上没有限制,包括频率和方向

Page 237: Clear Case Training

ClearCaseClearCaseClearCase

归并特点归并特点

图形化的工具容许使用点击方式

命令行程序提供不同的选项支持定制归并

归并的容量 高达32个Merge Manager程序搜索一组用户定义的版本,并报告所有范围内的需要归并的版本

图形化的工具容许使用点击方式

命令行程序提供不同的选项支持定制归并

归并的容量 高达32个Merge Manager程序搜索一组用户定义的版本,并报告所有范围内的需要归并的版本

Page 238: Clear Case Training

ClearCaseClearCaseClearCase

归并特点(续)归并特点(续)

Merge对话框窗口使你能够:查看基点(base)文件和贡献(contributor)文件的内容

查看和编辑归并结果

指定ClearCase何时询问用户干预

重新启动归并过程

直到退出归并窗口,归并过程才会被完成或记录下来

Merge对话框窗口使你能够:查看基点(base)文件和贡献(contributor)文件的内容

查看和编辑归并结果

指定ClearCase何时询问用户干预

重新启动归并过程

直到退出归并窗口,归并过程才会被完成或记录下来

Page 239: Clear Case Training

ClearCaseClearCaseClearCase

归并算法归并算法

merge result

A

B

C

D

A

B

Z

?

X

deleted deleted

changed changed

changed changed

conflict

base contrib1 contrib2

n/c

inserted inserted

A

B

C

D

X

A

B

C

D

Page 240: Clear Case Training

ClearCaseClearCaseClearCase

集成并行开发集成并行开发

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 241: Clear Case Training

ClearCaseClearCaseClearCase

确定Base Contributor确定Base Contributor

如果所有contributors是同一个元素的版本,ClearCase确定 近的base contributor来比较和进行自动归并

如果所有contributors不是同一个元素的版本,不会确定base contributor,自动归并不会进行。你会被提示对文件间的每个差异做选择

如果所有contributors是同一个元素的版本,ClearCase确定 近的base contributor来比较和进行自动归并

如果所有contributors不是同一个元素的版本,不会确定base contributor,自动归并不会进行。你会被提示对文件间的每个差异做选择

foo.c\main

foo.c\main

bar.c\main

= contributor versions

= base= ?

Page 242: Clear Case Training

ClearCaseClearCaseClearCase

归并的例子归并的例子

在这个例子中

Base是foo.c@@\main\1Contributors是foo.c@@\main\3和foo.c@@\main\rel2_bugfix\1

在这个例子中

Base是foo.c@@\main\1Contributors是foo.c@@\main\3和foo.c@@\main\rel2_bugfix\1

Page 243: Clear Case Training

ClearCaseClearCaseClearCase

开始归并开始归并

Page 244: Clear Case Training

ClearCaseClearCaseClearCase

归并确认归并确认

Page 245: Clear Case Training

ClearCaseClearCaseClearCase

归并结果归并结果

接受、拒绝或编辑所需要的归并行接受、拒绝或编辑所需要的归并行

BaseBase From versionFrom version To versionTo version

Merge resultMerge result

Page 246: Clear Case Training

ClearCaseClearCaseClearCase

归并结果归并结果

作为归并结果,ClearCase将已存在的文件命名为file.contrib将归并结果存放在文件的checked-out版本中

使用一个链接在VOB数据库中记录归并

作为归并结果,ClearCase将已存在的文件命名为file.contrib将归并结果存放在文件的checked-out版本中

使用一个链接在VOB数据库中记录归并

Page 247: Clear Case Training

ClearCaseClearCaseClearCase

验证归并结果验证归并结果

在执行完成归并操作后,通过版本树浏览器验证归并结果,并且在完成后进行check in在执行完成归并操作后,通过版本树浏览器验证归并结果,并且在完成后进行check in

Page 248: Clear Case Training

ClearCaseClearCaseClearCase

集成并行开发集成并行开发

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 249: Clear Case Training

ClearCaseClearCaseClearCase

归并目录归并目录

每个ClearCase目录元素的版本内容包括文件元素、目录元素和VOB连接

目录归并:

能够处理同一个目录元素的两个或更多的版本——结果是新的目录版本中反映了所有contributor的内容

不能处理两个不同的目录元素(如,src和include不能被归并在一起)

不会留下一个.contrib目录作为归并的证据

每个ClearCase目录元素的版本内容包括文件元素、目录元素和VOB连接

目录归并:

能够处理同一个目录元素的两个或更多的版本——结果是新的目录版本中反映了所有contributor的内容

不能处理两个不同的目录元素(如,src和include不能被归并在一起)

不会留下一个.contrib目录作为归并的证据

Page 250: Clear Case Training

ClearCaseClearCaseClearCase

归并目录:举例归并目录:举例

在归并前,src目录的两个分支有不同的内容Z:\test>cleartool ls srcsrc@@\main\LATESTsrc@@\main\LATEST\date.c@@src@@\main\LATEST\hello.c@@src@@\main\LATEST\hello.h@@src@@\main\LATEST\util.c@@

Z:\test>cleartool ls srcsrc@@\main\enhance\LATESTsrc@@\main\enhance\LATEST\clock.c@@src@@\main\enhance\LATEST\hello.c@@src@@\main\enhance\LATEST\hello.h@@src@@\main\enhance\LATEST\util.c@@

在归并前,src目录的两个分支有不同的内容Z:\test>cleartool ls srcsrc@@\main\LATESTsrc@@\main\LATEST\date.c@@src@@\main\LATEST\hello.c@@src@@\main\LATEST\hello.h@@src@@\main\LATEST\util.c@@

Z:\test>cleartool ls srcsrc@@\main\enhance\LATESTsrc@@\main\enhance\LATEST\clock.c@@src@@\main\enhance\LATEST\hello.c@@src@@\main\enhance\LATEST\hello.h@@src@@\main\enhance\LATEST\util.c@@

\main

\enhance

src@@\main\LATESTdate.chello.chello.hutil.c

src@@\main\enhance\LATEST

clock.chello.chello.hutil.c

Page 251: Clear Case Training

ClearCaseClearCaseClearCase

归并目录(续)归并目录(续)

执行目录归并:确保配置规格选择了目标版本

确保所有contributor版本都checked inCheck out目录的目标版本

立刻执行归并,不要在checked-out版本中进行任何其它更改

举例:将enhance分支下的 新版本归并到main分支下:

check in src@@\main\enhance\LATEST设置视图规格为缺省:

element * CHECKEDOUTelement * \main\LATEST

check out src@@\main\LATEST

执行目录归并:确保配置规格选择了目标版本

确保所有contributor版本都checked inCheck out目录的目标版本

立刻执行归并,不要在checked-out版本中进行任何其它更改

举例:将enhance分支下的 新版本归并到main分支下:

check in src@@\main\enhance\LATEST设置视图规格为缺省:

element * CHECKEDOUTelement * \main\LATEST

check out src@@\main\LATEST

Page 252: Clear Case Training

ClearCaseClearCaseClearCase

归并目录(续)归并目录(续)

在Diff Merge窗口中,可以选择归并目录的变化在Diff Merge窗口中,可以选择归并目录的变化

Page 253: Clear Case Training

ClearCaseClearCaseClearCase

目录的内容可以通过Windows Explorer或cleartool ls进行查看

Z:\test>cleartool ls srcsrc@@\main\LATESTsrc@@\main\LATEST\clock.c@@ src@@\main\LATEST\date.c@@src@@\main\LATEST\hello.c@@src@@\main\LATEST\hello.h@@src@@\main\LATEST\util.c@@

目录的内容可以通过Windows Explorer或cleartool ls进行查看

Z:\test>cleartool ls srcsrc@@\main\LATESTsrc@@\main\LATEST\clock.c@@ src@@\main\LATEST\date.c@@src@@\main\LATEST\hello.c@@src@@\main\LATEST\hello.h@@src@@\main\LATEST\util.c@@

归并目录(续)归并目录(续)

\main

\enhancesrc@@\main\

LATESTclock.cdate.chello.chello.hutil.c

Page 254: Clear Case Training

ClearCaseClearCaseClearCase

集成并行开发集成并行开发

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 255: Clear Case Training

ClearCaseClearCaseClearCase

Merging an Unreserved CheckoutMerging an Unreserved Checkout

如果已有后续版本,unreserved checkout不能被checked in,checkin将会显示如下窗口:如果已有后续版本,unreserved checkout不能被checked in,checkin将会显示如下窗口:

unreserved checkout在被checked in之前,必须与新版本进行归并

unreserved checkout在被checked in之前,必须与新版本进行归并

Page 256: Clear Case Training

ClearCaseClearCaseClearCase

Merging an Unreserved Checkout(续)Merging an Unreserved Checkout(续)

checkin后归并前 归并后

Page 257: Clear Case Training

ClearCaseClearCaseClearCase

集成并行开发集成并行开发

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 258: Clear Case Training

ClearCaseClearCaseClearCase

Merge Manager-介绍Merge Manager-介绍

当有大量源文件进行频繁地分支和归并时,Merge Manager可以除去并行开发中的大量工作

Merge Manager提供了一个图形界面来确定要归并的文件和执行归并

当有大量源文件进行频繁地分支和归并时,Merge Manager可以除去并行开发中的大量工作

Merge Manager提供了一个图形界面来确定要归并的文件和执行归并

Page 259: Clear Case Training

ClearCaseClearCaseClearCase

使用Merge Manager使用Merge Manager

选择一个进行归并的视图,可以是动态视图或快照视图选择一个进行归并的视图,可以是动态视图或快照视图

Page 260: Clear Case Training

ClearCaseClearCaseClearCase

使用Merge Manager(续)使用Merge Manager(续)

选择你想要进行归并的元素选择你想要进行归并的元素

Page 261: Clear Case Training

ClearCaseClearCaseClearCase

使用Merge Manager(续)使用Merge Manager(续)

选择一个挑选元素版本进行归并的方法选择一个挑选元素版本进行归并的方法

Page 262: Clear Case Training

ClearCaseClearCaseClearCase

使用Merge Manager(续)使用Merge Manager(续)

提供归并所需要的额外信息提供归并所需要的额外信息

Page 263: Clear Case Training

ClearCaseClearCaseClearCase

使用FindWizard使用FindWizard

当确定你选择的归并准则时,点击Find当确定你选择的归并准则时,点击Find

Page 264: Clear Case Training

ClearCaseClearCaseClearCase

检验Merge检验Merge

Properties of Version窗口的Custom tab显示了归并的信息Properties of Version窗口的Custom tab显示了归并的信息

Page 265: Clear Case Training

ClearCaseClearCaseClearCase

集成并行开发集成并行开发

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

ClearCase的归并概述

归并文件元素

归并目录元素

执行特殊归并类型

自动归并

注解代码和产生报告

Page 266: Clear Case Training

ClearCaseClearCaseClearCase

注解代码注解代码

列出一个版本的内容,并注解每一行,指出此行在何时、哪一个版本中被添加

只有text_files或compressed_text_files能被注解

缺省的输出时一个视图私有文件:filename.ann如果使用cleartool annotate产生,输出可以通过-fmt选项来进行多种格式化

列出一个版本的内容,并注解每一行,指出此行在何时、哪一个版本中被添加

只有text_files或compressed_text_files能被注解

缺省的输出时一个视图私有文件:filename.ann如果使用cleartool annotate产生,输出可以通过-fmt选项来进行多种格式化

Page 267: Clear Case Training

ClearCaseClearCaseClearCase

Cleartool annotate命令Cleartool annotate命令

Z:\test\src>cleartool annotate util.cAnnotated result written to "util.c.ann".Z:\test\src>cleartool annotate util.cAnnotated result written to "util.c.ann".