我们公司已经决定从ClearCase的迁移我们的源代码与git,这是伟大的:-)创建git的历史,blob和树对象,并行
我知道,ClearCase和git的是完全地不同的源代码管理系统。 但是我们的开发者只会有一个包含完整历史的SCM。
我collegue发现下面的工具,我们的进口ClearCase的历史到混帐:https://github.com/charleso/git-cc
不幸的是我们的代码有超过46000个的源代码文件和历史进口超过10年。
我分析了这个工具,在我看来有两个瓶颈。 第一个是从clearcae服务器导入文件。这很容易通过多线程来解决。 第二个是git-cc本身的工作流程。
- 通过cleartool lshistory获取主分支的历史
- 创建文件和他们组的变更,以COMIT的
- 获得来自呼叫控制服务器文件(S)的指定版本,并复制到工作目录
- 混帐添加。
- git的承诺
- 挑选下一组和3再次启动
我想我可以通过使用低级别的git命令,并使用多线程改善。
每个comit-group查询它从服务器的变化并在git数据库中创建一个blob对象,因此它可以运行多个线程中的多个组。 另外我有一个线程,从刚刚创建的blob对象创建git中的历史记录。
我的问题是现在,这对你有意义吗?或者你认为我是naiv?
我忘记了任何git锁定机制吗?
您有任何其他想法?
通常为了导入你使用[git-fast-import](https://git-scm.com/docs/git-fast-import)。我不知道它是否利用多个CPU(可能不是,因为它将所有数据作为单个二进制流),但至少它不会执行任何额外的IO。 – max630
@ max630 嗨max630,谢谢你的回复。这是避免任何额外I/O的好处。我会评估它。 – jungnick