并行创建git历史记录,斑点和树对象



我们的公司已决定将我们的源代码从clearcase迁移到git,这很棒: - )

我知道ClearCase和Git是完全不同的源代码管理系统。但是我们开发人员只有一个包含完整历史的SCM。

我的同事找到了以下工具,该工具将我们的Clearcase历史导入Git:https://github.com/charleso/ghit-cc

不幸的是,我们的代码有46000多个源代码文件,要导入的历史记录超过10年。

我分析了这个工具,我认为有两个瓶颈。首先是从clearcase服务器导入文件。通过在多个线程中执行此操作很容易解决。第二个是git-cc本身的工作流程。

  1. 通过ClearTool Lshistory获取大支的历史
  2. 创建文件的更改并将其分组到COMIT的
  3. 从CC服务器获取指定的文件,然后复制到工作目录
  4. git add。
  5. git commit
  6. 选择下一个组,然后以3。

我认为我可以使用低级git命令并使用多个线程来改进它。

每个提交组都从服务器查询其更改并在GIT数据库中创建一个blob对象,因此可以为多个线程中的多个组运行。另外,我还有一个线程,该线程从刚刚创建的blob对象创建了git中的历史记录。

我的问题现在是对您有意义的还是您认为我天真的?

我是否忘记了任何git锁定机构?

您还有其他想法吗?

使用多个线程在git reto的同一分支中导入提交是有风险的(除非,否则您可以创建" blob对象",那就是可以重播的补丁程序)。

但是,可以在不同的分支上使用多个线程进行提交:您创建不同的存储库,每个存储库以进口分支导入,然后您可以将这些仓库获取到一个常见的仓库中,并用git replace或Grafts将它们重新构成。

但请记住:每个git repo都是一个组件,因此,如果您的巨型清除案件VOB包含几个组件(一组文件),最好将它们分成多个Git Repo,而不是试图创建一个巨大的Git One。br>我在"清除到git迁移"中详细介绍了。

最新更新