我正在将一个带有历史记录的大型subversion存储库迁移到git。我开始使用'git svn clone'命令克隆svn repo。克隆时崩溃了,然而,我通过执行'git svn fetch'恢复了迁移。迁移已成功运行了几天 - 有时它崩溃了,我不得不删除index.lock文件,详见此处 - fatal: Unable to create '/.git/index.lock': File exists。删除此文件几次后,它成功继续,直到我遇到同样的错误:
fatal: Unable to create '/path/index.lock': File exists.
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.
read-tree f49b2a08d26076d9cb2828b9aba5fde30d46f73b: command returned error: 128
但是,这次删除index.lock文件不起作用,'git svn fetch'继续抱怨。以下是发生的事情:
我收到上述错误
我删除了index.lock文件
我重启'git svn fetch'
'git svn fetch'进程重新创建index.lock文件
上述错误再次出现'git svn fetch'错误
所以'git svn fetch'似乎处于一个糟糕的循环中,它重新创建了index.lock文件,然后抱怨它存在。所以:
我删除了index.lock文件 我确保机器有足够的磁盘空间 我已经尝试重新启动机器,以防有一个旧的git处理挂在锁定文件上 我按照fatal: git-write-tree: error building trees
的建议完成了git gc和git prune以上都没有奏效,我是git的新手。我不想重新启动迁移,因为它需要几天才能运行。任何人都可以推荐一些我可以试试的东西吗?
答案 0 :(得分:2)
回答我自己的问题只是为了整理一下。不幸的是,我从来没有找到问题的根源,我们不得不启动一个新的迁移(实际上我们在不同的机器上引发了3次迁移,第一次完成了需要2周才能运行)。如果您要迁移大型存储库(我们的代码和资产基础大约为35 GB),则需要花费很长时间并遇到一些挫折。我们经常遇到上面的错误,我很高兴地说删除index.lock文件并继续使用“git svn fetch”进行迁移。我们没有再次遇到迁移不会继续的问题。