2011-07-15 44 views
4

我有一個文件夾中的svn存儲庫的完整結帳。但我沒有svn存儲庫的憑據(託管在Unfuddle中)。我想將這個文件夾移動到一個新的git repostitory(Github),它的所有歷史記錄和更改都完好無損。如果可能的話,我想保留委託人。 如何將退出的svn文件夾導出到Github?當我沒有svn憑證時,如何將svn倉庫導出到git?

回答

9

SVN checkout不包含它自己的歷史記錄,所以你只能把它當作普通的文件集。

git init newgit 
svn export yourcheckout newgit 
git commit -a newgit 

svn export將複製除隱藏的.svn目錄以外的所有文件。 git commit -a將遞歸添加所有內容來更改控件並提交它。當然,系統會提示您提交提交記錄。

將其發佈到github上,首先創建在github上一個賬戶,然後去這裏創建一個存儲庫:

http://help.github.com/create-a-repo/

比方說,你把它叫做測試,您的帳戶prabesh,所以它的全名是

[email protected]:prabesh/test.git 

什麼就做什麼的全部細節都顯示在github上,當你創建一個回購協議,但一旦你的回購存在,你可以上傳本地的svn出口混帳回購協議github上,通過遠程登錄(github上)回購,並推動您的本地副本:

git remote add origin [email protected]:prabesh/test.git 
git push -u origin master 
+0

感謝您的建議。我在尋找是否可以保留差異和日誌的歷史。但由於我沒有證書,我認爲我無能爲力,只能創建一個新的回購協議。 –

+2

當然你可以聯繫Unfuddle恢復憑據?如果你能做到這一點,那麼你可以使用'git-svn' - 一個git的附加組件,它允許你導入你的SVN倉庫,包括它的歷史記錄。你將能夠執行'git svn clone svnrepo'。 – memetech

+0

它可能看起來有點不可思議,但之前的開發者已經離開了,而且所有留在我身邊的是一個充滿代碼的文件夾。只是想弄明白爲什麼他寫了他寫的東西;) –