从 Microsoft Visual SourceSafe 到 IBM Rational ClearCase 和统一变更管理的数据迁移
 

2010-01-22 作者:Vivek K Pandey 来源:IBM

 
本文内容包括:
本文描述了将 Microsoft® Visual SourceSafe®(VSS)储存库中的数据,转化为 IBM® Rational® ClearCase® 储存库中数据的过程。它还向您展示了怎样得到统一变更管理(UCM)格式的数据,这样您就可以处理活动,流以及项目结构了。

本文描述了怎样将 Microsoft® Visual SourceSafe®(VSS)储存库中的数据(源代码,文件,以及其他),转化为 IBM® Rational® ClearCase® 储存库中的数据,并转化为 UCM 格式,以处理活动,流和项目结构。因为您不能直接将数据导入到 Unified Change Management (UCM)的版本对象库(VOB)结构,所以您必须完成三步的转化以得到 UCM 格式的数据:

  1. 从 VSS 储存库中导出数据。
  2. 将数据导入到 Base ClearCase 格式的 ClearCase 储存库中。
  3. 将 Base ClearCase 目录和标签转化为 UCM 组件的目录和基线。

但是,在您执行这些步骤之前,它可以帮助理解数据是怎样保存在 VSS 储存库中的。您还必须在开始从 VSS 中导出数据之前,就决定需要作出什么选择。

本文举了一个 VSS 中已存在项目结构的范例,这个例子是关于转化到实际项目中 ClearCase 和 UCM 格式的数据的。

可视的 SourceSafe 目录结构

数据保存在单个目录树下的 VSS 中,所有的项目路径都以前斜符(/)开始。因此,VSS 中的典型项目结构如图 1 所示。Rational_Sample_data是产品名,它具有不同的目录,它同样包含了以词“Branch.”开始的目录。这些目录仅仅是已存在主线目录的分支版本。

图 1. 典型的项目结构
图表

为了生动描述,目录 Source 就是主线开发开始的地方,Branch_Source 是源目录的分支发展。(如果您熟悉 ClearCase 视角,不是每一个分支您都有单独的物理目录的,这可能会造成混乱)。

目录 Source 与目录 Branch_Source 可能会也可能不会包含不同的数据,这取决于开发行所做的工作。但是,目录 Branch_Source 会一直存在于主线开发的一些版本中。

在这些情况下,Branch_Source 创建至 Source 目录下的 Version 173,如图 2 所示。

图 2. 使用分支开发的范例
两个分支的图表

您可以使用这种类型的分支,以修补产品公布版本的一些漏洞,同时协同工作以开发软件的下一个版本。在图 2 中,标签 Build.20 用于目录 Source 的 Version 173,并创建一个分支以修补 Build.20 中的漏洞。

UCM 目录结构

在您从 VSS 中导出数据之前,您需要依靠您 在 UCM 中最终想要得到的组件(目录)。如果目录结构需要与 VSS 中的保持一致的话,那么就将完整的 Source 目录或者 Source 目录内的每一个目录宣布为 UCM 组件 。

在 UCM 中有一个合适的组件结构有着显然的优势。UCM 用户手动描述这些优势。

在本例中,您宣布 Source 目录为您的 UCM 组件(在本文的下一段落中将会向您展示怎样做到这一点)。在这一点上,不要担心 Source 目录的分支复制版本,因为您还会在本文的后面学到怎样去导入它。

在您决定 UCM 中的目录结构之后,您可以继续从 VSS 中导出数据。这个可以导入到 ClearCase 格式。

第 1 步 从 VSS 中导出数据

执行这些步骤以从 VSS 中导出数据:

  1. 打开一个命令行并确保 PATH 变量包含了您的 VSS 安装目录的路径。
  2. 使用合适的认证手段,将 VSS 储存库映射到网络驱动器上。
  3. 设置以下的环境变量:
    • set SSDIR=V:\ {mapped drive of the VSS repository}
    • set TMP=c:\temp
    • set SSUSER=<valid user name who has access to vss repository>
    • set SSPWD = <VSS password of above user-id>
    • 设置 VSS 项目目录为该文件夹,它们都导出到:ss cp “$/Article/DemoArticle1.0/Source"
    • 使用以下的命令来验证当前的项目:ss cp
  4. 通过使用以下命令来将 VSS 目录导出到一个文本文件中:
    clearexport_ssafe –r –o  c:\datafiles\vss_export_Source.txt

    命令 clearexport_ssafe 也有特定可用的开关,在这里您可以根据需要使用它:
    • –p <date-time> :过程只会记录那些变更,因为 date-time 只会指定为新的元数据。
    • –s <date-time> :只处理那些变更后的版本,因为 date-time 已经被指定。
    • –l <date-time> :只处理那些重要的版本,但是因为指定的时间所以它包含了创建的版本。一个版本只有在满足以下条件才会重要:
      • 它是最新的版本
      • 它拥有一个标签
  5. 为了让 VSS 保持与 ClearCase 相同的分支结构(如图 1 所示),使用下面的命令:
    Clearexport_ssafe –r –s <date-time> -b Branch_Source  -v Build.20  
    -o c:\datafiles\vssexport_branch.

    就是:
    • Branch_Source 是 ClearCase 中的 Target 分支。
    • Build.20 就是 LabelBranch_Source 就是从这里得来的。
    • <date-time> 就是 Branch_Source 在 VSS 中创建的 Time,这样它只会处理分支上需要的版本。
  6. 如果没有错误,在成功完成 export 命令之后,输出文件就会有导出文件了。

第 2 步. 导出数据到 ClearCase

在这一步中,您需要在第一步创建的输出数据文件的帮助之下,导出数据到 ClearCase 储存库中。

注意:如果您没有使用 UCM 作为您的目标 ClearCase 创建时,那么这也许会是您的转变过程的最后一步。但是,如果这种导入是 UCM 创建时,那么您就必须完成第 3 步。而且,clearimport 命令不能用于 UCM 视图环境下,这样导入只能在 Base Clearcase 视图环境下运行。

现在您可以开始导入过程了:

  1. 创建 Base ClearCase VOB CC_Migration_VOB(如果它还没有创建的话。)
  2. 创建 Base ClearCase 视图CC_Migration_View(如果它还没有创建的话。)
  3. 打开命令行。
  4. 设置在第 2 步中创建的视图环境:
    cleartool startview ClearCase_Migration_View
    net use z:\ \\view\ClearCase_Migration_View
     
  5. 浏览 VOB 直到您找到目标位置,然后执行以下的命令:
    cd ClearCase_Migration_VOB clearimport c:\datafiles\vssexport_Source
     
  6. 导入输出应该与列表 1 中的相类似。
列表 1. clearimport 命令的范例输出
 
Validating label types.
Validating directories and symbolic links.
Validating elements.
Creating element “.\bugfix/add.sql".
  version “1"
  version “2"
  version “3"
Creating element “.\bugfix/mod_empl.c".
  version “1"
  version “2"
  version “3"
  version “4"
.
.
.
Closing directories.

在您完成这个导入步骤之后,您的数据应该在您在步骤 1 创建的 VOB 中(CC_Migration_VOB),您可以通过使用有效的 ClearCase 视图,来访问后面的部分。(如果您导入到分支之后,编辑视图的 config-spec)。

  1. (可选的)您也可以标记导入的版本,以为源代码的进一步发展识别 Base 版本。为了使用以上的视图来向所有的导入源代码应用标签,执行以下的命令:
    cleartool mklbtype –c “Identify imported versions from VSS" VSS_to_CC_Migrated

     
  2. 使用 Apply Label 向导来向所有的导入元素应用“VSS_to_CC_Migrated”标签。重点:确认您锁定了标签以防止将标签移到其他的版本。

如果您对为配置管理创建 UCM 使用模型,继续学习接下来的章节。

第 3 步. 将 Base ClearCase 目录和标签装化为 UCM 组件目录和基线

UCM 引入了两种 VOBs 的概念:Project VOB 和 Component VOB。

  1. 创建 UCM Project VOB。(遵循 ClearCase 用户手册中的指导创建一个 Project VOB)。
  2. 接下来,根据 UCM 来使用上一个章节中的导入数据。
  3. 导入 VOB 目录(在第 2 步创建以作为导入的结果)以作为一个 UCM 组件。右键点击 Components,并选择 Import > VOB Directory as Component,如图 3 所示。
图 3. 导入 VOB 目录
显示描述的菜单选项
  1. 按照以下方式来指定组件细节(同样见于图 4):
    • 视图:test_view_vivek
    • VOB:BASE_CC_VOB
    • 根目录:Calculator
    • 组件名字:Calculator
图 4. “导入 VOB Directory 作为 Component”视图
视图, VOB, 根目录, 组件名字区域

在本例中,test_view_vivek 是 Base ClearCase 视图,通过它组件目录就可见了。Calculator 就是组件目录。

  1. 为在上面第 4 步中创建的组件,导入在第 2 步中创建的标签以作为 UCM 基线。右键点击 Component 并选择 Import > Label as Baseline,如图 5 所示。
图 5. 导入标签
描述的菜单选项
  1. 对于给定的新基线,选择使用您想要导入标签的组件,如图 6 所示。
图 6. “导入标签 – Step 1 of 2”视图
左边的可用组件, 右边选择
  1. 指定您在步骤 2 中创建的标签,它就是必须转变为 UCM 基线的 Base ClearCase 标签,如图 7 所示。
图 7. 导入标签 – Step 2 of 2
选择标签并指定基线促进水平
  1. 在前面创建的项目 VOB 中创建一个名为 Migration_PVOB 的 UCM 项目(您可以在 ClearCase 用户手册中找到创建 UCM 项目的步骤)。项目的集成流可以命名为 Migration_Project_Int
  1. 开始时,点击 Migration_PVOB 并选择 New > Project,如图 8 所示。
图 8. 创建一个新项目
选择的命令菜单
  1. 添加组件基线(就是您刚刚导入的),如图 9 所示。
图 9. 从列表中选择基线,并点击 Add
列表显示 Calculator 和脚本
  1. 为名为 Migration_Project的项目创建集成视图,它指向名为 Migration_Project_Int 的 Integration 流。

如果您从 ClearCase 开始,那么集成流会从基线创建(作为导入标签的结果创建),如图 10 所示。

图 10. “ClearCase Version Tree Browser”视图
集成流的图表

现在您就可以开始使用带有 Rational ClearCase 转化的源代码。

进一步的转化

您可以使用文中的信息,来帮助策划从 VSS 到 ClearCase 的转化(可能从 ClearCase 到 UCM)。在实际的转化发生之前,清除的定义什么将会从 VSS 导出,以什么样的方式(这就是说,VSS 的哪一个基线和代码会整合到 ClearCase,以及您将会使用什么流结构和组件结构)。

参考资料

学习
  • 查看 developerWorks 上的 Rational ClearCase 产品专题,了解有关 ClearCase 的文章和教程。
  • 咨询 IBM® Redbooks® 了解深入信息,位于 IBM Versatile Storage Server。本书提供了 Versatile Storage Server (VSS) 架构的广泛理解。在引言之后,其描述了架构,技术,数据流,配置,迁移和恢复方面的详细信息。
  • 访问 配置管理信息中心,了解诸如本地和远程访问,一个经证明的使用模型,广泛支持的环境,透明访问文件以及并行开发的特性如何支持您的团队成员,直接和受控访问项目资产,他们需要这些资产以创建、更新、构建、重用和维护您的软件。
  • IBM Rational 软件交付平台 中了解其它应用程序,包括适用于并行开发和地域分布式团队的协作工具,以及用于架构管理、资产管理、变更和发布管理,集成需求管理、过程和组合管理,和质量管理。
  • 访问 developerWorks 上的 Rational 专区,了解有关 Rational 软件交付平台产品的技术资源和最佳实践。
  • 查看 Rational Edge 电子期刊中文版,获得了解高效软件开发背后概念的文章。
  • 订阅 IBM developerWorks 时事通讯,获得有关最佳的 developerWorks 教程、文章、下载、社区活动、网络广播和事件的每周更新。
  • 浏览 技术书店,获得有关这些和其它技术主题的书籍。
     
获得产品和技术 讨论
火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织