2015-06-11 69 views
4

我下載的SVN倉庫與添加從SVN項目舊的歷史與GIT SVN

git svn clone -s svn+ssh://svn.dummy.com -r666666:HEAD 

現在我想舊的歷史添加到項目中。我以後可以這樣做嗎?還是必須重新下載整個項目?

我基本上想要實現的是檢查一個包含其歷史的巨大包。 git svn總是在某些時候崩潰。 SubGit對svn + ssh完全不起作用(對我來說)。替代品是受歡迎的。

+1

'git svn'通常會在某個時間點崩潰,但只要完成了'git svn fetch',就可以簡單地重新開始,直到您擁有完整的歷史記錄。 – onionjake

+1

KDE的svn2git工具能夠處理非常大的Subversion存儲庫。 http://www.midwesternmac.com/blogs/jeff-geerling/switching-svn-repository-svn2git – onionjake

+1

@onionjake'git svn fetch'有時會恢復,但在某些時候停止工作。我從來沒有設法得到這個龐大的存儲庫的整個歷史,而不會遇到perl錯誤。 – pfnuesel

回答

5

兩條建議:從頭開始導入/轉換整個Subversion存儲庫,並使用SubGit進行轉換。

以後可能會添加較舊的歷史記錄(兩年前我做過),但它根本不好玩。需要滿足一些要求才能成爲可能,並且這個過程不是直截了當的。 git本身並不能幫助你,因爲這是非常不尋常的操作。您可以在this article中一步一步找到整個工作流程。

更多的,它會混淆你的同事,因爲提交標識符在過程中發生變化,他們將以重複提交(提交具有相同消息和文件更改但具有不同哈希)結束。

SubGitgit svn做了更好的轉換。它生成的時間線看起來更像是原始的Subversion時間線。

+1

用'git svn'導入整個subversion歷史將需要幾天的時間。我試過了,但它總是在某些時候崩潰。這就是爲什麼我想逐漸添加更舊的歷史。 SubGit會替換git svn嗎?如果是這樣,我會試一試。 – pfnuesel

+1

SubGit是一個獨立的軟件,可以作爲一個雙向的'svn''git'網關(將'svn'推到'svn'上''svn'支持或可以被翻譯成某種方式),但它也可以是用於[從Subversion一次性導入Git](http://www.subgit.com/remote-book.html#7)。我的倉庫只有大約300個提交(PHP文件,幾個圖像,沒有大的二進制文件),並在幾分鐘內完成轉換。我不知道它在大型軟件倉庫中的表現如何。試試看,也許它可以幫助你。 – axiac

+1

如果你在切片中將svn庫轉換爲git,你可以使用'git remote'(連接repos)和'git rebase'(做實際的連接)輕鬆地連接它們。在這個過程中你會失去提交日期(作者日期不受影響)。我在答案中鏈接的冗長的文章是關於如何(在「rebase」之前備份它們)和恢復它們(之後)。 – axiac