我有大量的ClearCase数据需要迁移到Perforce。这些修订版本跨越了十年的时间,我需要尽可能保留更多的分支和标签信息。此外,我们广泛使用符号链接,在ClearCase中得到支持,但在Perforce中不支持。你能提供哪些建议或工具,可以使这个过程更容易吗?
你还需要记住的是,你的导入脚本可能会比ClearCase提交稍微有些不同(也许你正在遍历目录,也许是文件的历史记录等等)。
因此,除非你将所有版本信息收集到一个(大型)数据库中并在之后进行排序,否则你最终会得到一些不太有用的提交(当然除了单个文件的历史记录)。如果你(希望)将你的提交策略更改为将原子更改提交到Perforce中,那么开发开始时就会变得可见:之前的提交在项目范围内根本没有任何意义。
所以你真的应该考虑放弃ClearCase的历史记录。标签/分支的创建也是一个不同的问题,因为你需要旧的configspecs来处理旧的分支。 最后你会遇到的问题是导入器运行时间: 如果你有大型的VOBs(例如10年,50 GB大小),你将等待几天才能收集所有信息并将其转换为漂亮的Perforce仓库。在这些日子里,你的开发团队将停止工作。
关于我从ClearCase迁移到Perforce时看到的一个导入提示,只是一个快速说明。
如ClearCase to Perforce Conversion Guide中所述:
Perforce支持原子更改事务;ClearCase不支持。
请注意,标签通常用于简单地表示特定易于指定的文件集的某个时间点的快照;在Perforce中无需使用标签就可以轻松实现此操作,因为Perforce使用原子更改事务和文件命名语法。
例如,可以通过以下方式获得//depot/projecta
中所有文件在更改42之前的状态:
p4 sync //depot/projecta/...@42
这意味着被导入的ClearCase项目是一个UCM one,因为基线的概念紧密跟随全局版本的概念。
只有带有基线的文件被导入,其他版本被丢弃。