2016-08-04 96 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可能會有一個類似的。這將允許從最後一次正確的狀態重新開始提取。