2016-08-04 70 views
0

我的问题:在Windows中由Ubunut VM迁移; Windows有一个死亡的蓝屏; Windows重新启动;移民遭到破坏!SVN2Git对象引用错误

~/folder$ svn2git --rebase 
error: refs/remotes/svn/some_branch does not point to a valid object! 
fatal: git cat-file 81974ef70e6b9dba85295bf7341dd6808c03250d: bad file 
cat-file commit 81974ef70e6b9dba85295bf7341dd6808c03250d: command returned error: 128 

command failed: 
git svn fetch 

我已经尝试过像这些答案中提到,以解决我的问题:

不幸的是没有帮助我至今。

任何人都有线索如何解决这个问题?这次迁移已经花了2周,我不想再次开始。

回答

1

有pleny工具叫svn2git,可能最好的是从https://github.com/svn-all-fast-export/svn2git KDE。从你的问题中,我得出结论,你没有使用那个,而是基于git-svn的那个。我强烈建议使用svn2git工具。这是我所知道的最好的,并且它对你的规则文件可以做的非常灵活。

此外,花费超过2周的整个迁移过程很可能会在几个小时内完成,因为它非常快速。

如果您不是100%关于存储库的历史记录,svneverever from http://blog.hartwork.org/?p=763是一个很好的工具,用于在将SVN存储库迁移到Git时调查SVN存储库的历史。

+0

让我们尝试一下然后... –

+0

面对这个错误:'svn-all-fast-export:/build/subversion-yttRtj/subversion-1.9.3/subversion/libsvn_subr/dirent_uri.c:972:svn_dirent_join:Assertion svn_dirent_is_canonical(base,pool)失败。已终止(核心转储)' –

+0

我从来没有见过这个错误。你发布的命令是什么? – Vampire

0

要解决的第一个问题是确保git-fsck运行正常。此后,第二个问题是能够继续迁移。

分支的第一次提交可能被正确写入磁盘,但最后一次提交失败。尝试运行git reflog show refs/remotes/svn/some_branch。如果显示提交,请尝试查找存在的最后一个提交:git show <hash>。然后你重置分支:git update-ref -m 'last commit found' refs/remotes/svn/some_branch <hash>。然后运行git fsck并修复下一个分支。

git-svn有一个命令git svn reset -r <n>svn2git可能会有一个类似的。这将允许从最后一次正确的状态重新开始提取。