ClearCase到SVN迁移

时间:2009-05-07 13:46:08

标签: svn migration clearcase

我有一个SVN导入工具的问题,用于迁移其中一个具有巨大历史记录的ClearCase VOB。我们想通过选择10 -15基线版本的代码并将其导入SVN来实现这一点。所以为了做到这一点,我认为用户必须逐个给我特定的版本。所以现在他问我如何用clearcase指定一个特定版本并导出它?这里的想法是给我代码作为tar ball ...这样我就可以在桌面上将它爆炸并导入到SVN。 .... !!!!我不知道如何在SVN的所有这些基线中导入/分层.......这是否类似于SVN。能帮帮我吧。

4 个答案:

答案 0 :(得分:2)

另一个选项是Migrate2SVN。开发人员(Clearvision)刚刚发布了v2.0,它似乎包含了许多优于Polarion软件和上述其他方法的改进。

http://www.clearvision-cm.com/clearcase-subversion-migration.html

希望能帮助任何与我同页的Google员工: - )

答案 1 :(得分:1)

我没有使用它,但我听说SVNImporter将导入您的ClearCase VOBS,包括历史记录。

听起来您的用户真正要求的是从CC一次导出几个版本到基本上“折叠”现有历史记录。比如说你有一个包含数千个修订版和数百个标签的大型VOB,并且你希望在新的subversion版本库中只有最后5个主要版本作为你的历史记录。您可以从CC导出最早的所需版本,导入SVN并创建工作副本。然后,您将从CC导出一些更高版本并复制到您的工作副本并进行更新。泡沫,冲洗,重复,直到你从CC获得LATEST。

您从CC获得的版本由views config spec控制。要仅获取与特定标签关联的文件(希望它们具有标签......),请将配置规范更改为:

element /vob/MyPath/… DESIRED_LABEL

要获取与标签关联的版本以及与您使用的标签无关的任何内容的当前版本:

element /vob/MyPath/… DESIRED_LABEL
element /vobs/MyPath/… /main/LATEST

有关详细信息,请参阅IBM/Rational config_spec documentation

答案 2 :(得分:1)

我自己做了一些明确的迁移: 这是我的想法:

  1. 使用Gary Ray建议的导入器,因为它不是很成熟。它缺少您想要的许多功能,例如目录版本控制,带有旧文件名的正确标签,已删除文件的历史记录等。此导入程序仅适用于您真正需要内容您的文件可能会失去整体结构更改

  2. 创建要导出的代码列表

  3. 编写脚本以为标记列表中的每个标记生成clearcase配置规范

  4. 替代方法:如果在步骤3中无法成功,请为每个标记创建配置规范列表

  5. tar并压缩您的clearcase视图并将其复制到SVN计算机上

  6. 将每个zip解压缩到一个文件夹

  7. 使用svn_load_dirs.pl导入SVN,您可能还想在SVN中创建标签

  8. 转到6下一个标签
  9. 请注意,这也适用于多个项目。但是,如果您有共享模块(SVN中的一个弱点),您将需要一个特定的repo-structure,并且导入到SVN可能会更复杂(可能使用svn:externals)。 你真的应该自动化这个过程,因为大多数时候你会不止一次导入,因为你的配置规格缺少文件,你的SVN结构会改变等等。所以编写解决方案脚本并自动运行所有内容,这将更多在所有迁移结束之前都是灵活的您可能还需要查看迁移结果。

答案 3 :(得分:0)

注意:如果通过“baseline”指的是“UCM Baseline”,对于给定的组件(Vob中的文件树),这变得更简单。

使用单个Integration Stream和动态视图创建一个UCM项目,然后:

ct lsbl -s component:myComponentToExport@\myPVob

将为您提供要导出的基线列表。

ct rebase -bas myIntStream@\myPVob aBaseline
动态视图中的

会将视图设置为导出源 (对于要导入最新的最旧的基线,重复每个基线)


但如果您使用的是使用base-ClearCase(而非UCM)标记的数据,请注意以下问题:

base-ClearCase标签可以放在任何文件上。像加里建议的那样规则

element /vob/MyPath/... DESIRED_LABEL

最终可以最终选择0个文件,因为标签“DESIRED_LABEL”尚未放在根目录“MyPath”上!


另外,没有“时间轴”修订的概念(如Subversion中的修订版) 如果标签证明太不可靠(因为没有放在所有文件上),解决方案可能是将标签的日期与time-based rule结合起来。

element /vob/MyPath/... DESIRED_LABEL
element /vob/MyPath/... .../myBranch/LATEST -time (date_Of_The_Label_Put)

'date_Of_The_Label_Put'是在至少一个元素上应用标签的日期 如果某些元素尚未标记,则仍会以正确的版本选择它们,即标签的版本部分应用于一组文件。