2013-05-14 4 views
1

我們目前有幾個小的半相關的SVN回購,只要提交就無效。然而,他們偶爾需要使用和/或他們的提交歷史需要審查。我們希望將它們全部移到一個預先存在的Git回購庫中,因爲我們大部分的工作都是在Git上完成的......有沒有辦法將提交歷史從SVN倉庫合併到Git分支?

在做研究時,我認爲我想實現的目標是擁有一個Git每個SVN回購的子樹分支都具有所有提交歷史記錄。但是,git-svn似乎只允許我將1個SVN回購與1個Git回購相關聯,因此我必須首先爲每個項目創建一個git回購,然後轉換爲最終回購中的子樹。 (我認爲)

有沒有辦法從直接的SVN回購歷史駛入了分公司,在我的Git倉庫,這樣我可以跳過有效冗餘創建的Git回購的步驟?

+0

git-svn,根據您的標籤... – 2013-05-14 17:58:34

回答

0

因此,我想避免額外存儲庫的原因是我們使用GitHub來存儲我們的存儲庫,而我需要創建的額外存儲庫會使我們超出當前計劃的限制。

因此,訣竅,我發現,是讓所有的倉庫的地方。我知道這是一種可能性,但不知道如何引用本地存儲庫。事實證明,它不會更容易!下面是我所經歷的步驟:

對於每個SVN倉庫:

git svn clone http://svnhost.com/path/to/svn/repo 

這將創建一個所有從SVN歷史(甚至時間戳被保留!)的本地的Git回購。接下來,轉到您要將其合併到的回購。創建一個分支,從代碼中提取:

git checkout -b newsvnbranch1 
git pull path_to_newsvnbranch1_git_repo 

現在,剩下的步驟是不是原來的問題的一部分,但他們是我需要完成的最終目標 - 所有的SVN回購和歷史合併在一起,但在他們自己的目錄中。

git mv trunk newname1 
git checkout master 
git merge newsvnbranch1 

完成每個SVN回購這些步驟基本上是離開你原來的Git回購具有以下結構:

original 
|-newname1 (containing the contents of the first SVN repo) 
|-newname2 (containing the contents of the second SVN repo) 
|-newname3 (and so on...) 

而且,git log現在將顯示每個交織回購的歷史。

1

一切都在git的更容易。我會使用像git2svn這樣的工具將Subversion版本庫導入到git中。

一旦git的,你可以在安裝有分支的新倉庫。您可以設置每個分支來跟蹤一個轉換的Subversion存儲庫。一旦你提取了變更集,你可以用git remote remove清除遠程追蹤。這使您在分支機構中使用來自Subversion的各種變更集的存儲庫。

相關問題