好吧,我对 SVN 导入器工具有一个问题,该工具用于迁移具有悠久历史的 ClearCase VOB 之一。我们考虑通过提取 10 -15 个基准版本的代码并将其导入 SVN 来做到这一点。因此,为此我认为用户必须一一给我特定的版本。所以现在他问我如何在clearcase中指向特定版本并导出它??.这里的想法是给我作为tar球的代码......这样我就可以在我的桌面上分解它然后将它导入到SVN。....!!!! 我不知道如何在 SVN 中的所有这些基线中导入/分层......这是否类似于 SVN。你能帮我解决这个问题吗?
4 回答
另一种选择是 Migrate2SVN。开发人员 (Clearvision) 刚刚发布了 v2.0,它似乎对 Polarion 软件和上述其他方法进行了许多改进。
http://www.clearvision-cm.com/clearcase-subversion-migration.html
希望对与我登陆同一页面的任何 Google 员工有所帮助 :-)
我自己做了一些clearcase迁移:这是我的想法:
不要使用 Gary Ray 建议的导入器,因为它不是很成熟。它缺少许多您想要的功能,例如目录版本控制、带有旧文件名的正确标签、已删除文件的历史记录等。此导入器仅适用于您真正需要文件内容并且可能会丢失的小规模迁移整体结构变化
创建要导出的标签列表
编写一个脚本来为标签列表中的每个标签生成 clearcase config-spec
替代方案:如果您无法在第 3 步中成功,则为每个标签创建一个配置规范列表
tar 并压缩您的 clearcase 视图并复制在您的 SVN 机器上收集它
将每个 zip 解压缩到一个文件夹
用于
svn_load_dirs.pl
导入 SVN,您可能还想在 SVN 中创建标签- 使用下一个标签转到 6
请注意,这也适用于多个项目。但是,如果您有共享模块(SVN 中的弱点之一),您将需要一个特定的 repo 结构,并且导入到 SVN 可能会更复杂(可能使用 svn:externals)。你真的应该自动化这个过程,因为大多数时候你会多次导入,因为你的配置规范缺少文件,你的 SVN 结构会改变等等。所以编写解决方案并自动运行一切,这将更多灵活,直到所有迁移结束。您可能还需要查看迁移结果。
我没有使用它,但我听说SVNImporter将导入您的 ClearCase VOBS,包括历史记录。
听起来您的用户真正要求的是一次从 CC 导出几个版本,以基本上“折叠”现有历史记录。例如,假设您有一个具有数千个修订版和数百个标签的大型 VOB,并且您希望仅将最近 5 个主要版本作为您的历史记录在新的 subversion 存储库中。您可以从 CC 导出所需的最早版本,导入 SVN 并创建工作副本。然后,您将从 CC 中导出一些更高版本并复制到您的工作副本中并进行更新。起泡、冲洗、重复,直到您从 CC 获得最新信息。
您从 CC 获得的版本由视图配置规范控制。要仅获取与特定标签关联的文件(希望它们具有标签...),请将配置规范更改为:
element /vob/MyPath/… DESIRED_LABEL
要获取与标签关联的版本以及与您使用的该标签无关的任何内容的当前版本:
element /vob/MyPath/… DESIRED_LABEL
element /vobs/MyPath/… /main/LATEST
有关更多信息,请参阅IBM/Rational config_spec 文档。
注意:如果“基线”指的是“UCM 基线”,对于给定的组件(Vob 中的文件树),这将变得更简单。
创建一个带有单个集成流和动态视图的 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 中的修订)。
如果标签被证明太不可靠(因为没有放在所有文件上),解决方案可能是将标签的日期与基于时间的规则结合起来。
element /vob/MyPath/... DESIRED_LABEL
element /vob/MyPath/... .../myBranch/LATEST -time (date_Of_The_Label_Put)
' date_Of_The_Label_Put
' 是标签在至少一个元素上的应用日期。
如果某些元素没有被标记,它们仍然会以正确的版本被选择,即标签被部分应用于一组文件时的版本。