我们公司决定将我们的源代码从clearcase迁移到git,这很棒: - )
我知道clearcase和git是完全不同的源代码管理系统。 但是我们开发人员只有一个包含完整历史记录的SCM。
我的同事找到了以下工具,它将我们的clearcase历史记录导入git:https://github.com/charleso/git-cc
不幸的是,我们的代码有超过46000个源代码文件,导入的历史记录超过10年。
我分析了这个工具,在我看来有两个瓶颈。 第一个是从clearcae服务器导入文件。通过在多个线程中执行此操作很容易解决。 第二个是git-cc本身的工作流程。
我认为我可以通过使用低级git命令和使用多个线程来改进它。
每个comit-group从服务器查询其更改并在git数据库中创建blob对象,因此可以在多个线程中运行多个组。 另外我有一个线程,它从刚刚创建的blob对象创建git中的历史记录。
现在我的问题是,这对你有意义还是你认为我是天真的?
我忘记了任何git锁定机制吗?
你还有其他想法吗?
答案 0 :(得分:0)
使用多个线程在Git仓库的同一分支中导入提交是有风险的(除非,如你所说,你创建" blob对象",这是你可以重放的补丁)。
但是可以在不同分支上使用多个线程进行提交:您创建不同的repo,每个repo用于分支导入,然后您可以将这些repos获取到一个公共repo中并使用git replace
or grafts重新附加它们。
但请记住:每个Git仓库都是一个组件,所以如果你的巨型ClearCase Vob包含多个组件(文件组),最好将它们分成多个Git仓库,而不是试图创建一个巨大的Git仓库。登记/> 我在" ClearCase to Git migration"。
中详述了这一点