迁移清除案例以强制执行

时间:2020-03-06 14:34:51  来源:igfitidea点击:

我有大量的Clearcase数据,需要将这些数据迁移到perforce中。这些修订跨越了十年的大部分时间,我需要保留尽可能多的分支和标签信息。另外,我们广泛使用符号链接,以明文形式支持,但在perforce中不提供支持。我们可以提出哪些建议或者工具,这可能会使此操作变得更容易?

解决方案

第一步是确定是否需要迁移所有内容或者仅迁移某些关键版本。如果仅迁移重要版本(发行版和主要里程碑),则在Perforce中的历史将变得简单得多,而不会丢失任何重要内容。然后,如果需要,可以将ClearCase保留为历史存档。 (除非IBM更改了ClearCase许可证在维护用尽时不会过期的事情,否则我们将失去获得新升级和补丁以及获得支持的权利)

请记住,Perforce不会版本控制目录,也不会保留完整的每个元素的版本树,这意味着1:1的精确结果将是不可能的。重新创建重要的快照是一个可以实现的目标。由于Perforce缺少ClearCase所依赖的功能,因此保留所有内容可能是不可能的。

要查看Perforce对迁移的看法,请查看
http://perforce.com/perforce/ccaseconv.html
这说明了主要差异,并介绍了我们可以采用的几种方法。

首先在Google搜索" casecase to perforce conversion"上进行搜索。
然后阅读《 ClearCase到Perforce转换指南》。
哭完之后,我们将必须决定(1)我们可以负担多少努力,以及(2)在转换过程中真正需要捕获什么。我们不会一无所获,所以我们不妨只关注获得重要的分支。

另一个考虑因素是,仅将每个受支持分支的当前状态捕获为快照,将其导入Perforce,然后关闭旧的ClearCase服务器,将其保存为当天的良好状态(当我们需要从服务器访问某些内容时)深,黑暗,Perforce前的日子...

我们还需要记住的事实是,importerscript可能会以不同于clearcase提交的其他顺序进行提交(也许我们正在遍历dir,可能是文件的历史记录等)。

因此,除非我们将所有版本信息收集到一个(大型)数据库中,然后对它们进行排序,否则最终将产生对查看不是很有用的提交(单个文件的历史记录除外)。当我们(希望)更改提交策略以将原子更改提交到perforce时,将在开发开始时将其显示出来:之前的提交对项目范围没有任何意义。

因此,我们确实应该考虑保留明确的历史记录。创建标签/分支也是一个不同的问题,因为我们需要为旧分支使用旧的configspecs。
最后,我们会在旧标签中得到错误的文件名(因为perforce不支持dir-vers。),因此我们将为此使用clearcase(并且很难为每个版本的文件获取正确的文件名!)。

我们将遇到的最后一个问题:导入程序运行时间:
如果我们有较大的VOB(例如10年,50 GB大小),则我们将等待几天,以便进口商收集所有信息并将其转换为漂亮的有光泽的perforce存储库。这整天,开发团队将停止工作。

简要介绍一下我从ClearCase到Perforce的导入。
如《 ClearCase到Perforce转换指南》中所述:

Perforce supports atomic change transactions; ClearCase doesn't.
  
  Note that labels are often used to simply denote a snapshot in time for a particular easily-specified set of files; this is inherently easy to do in Perforce without using a label, due to Perforce's use of atomic change transactions and file naming syntax.

  For example, the state of all the files in //depot/projecta as of change 42 can be obtained with
p4 sync //depot/projecta/...@42

这意味着导入的ClearCase项目是UCM项目,因为基线的概念紧跟全球修订的项目。
仅导入带有基线的文件,而其他版本则被丢弃。