2011-07-15 70 views
2

我想跟蹤一個git倉庫中的幾個Subversion倉庫。我設法讓git svn將所有Subversion版本庫提取到他們自己的遠程分支中。所以現在如何將幾個Subversion遠程合併到一個主分支

$ git branch -a 
master 
remotes/svn/Project1 
remotes/svn/Project2 
remotes/svn/Project3 

這似乎很好。現在我想將所有這些分支合併到master中,但在子目錄中,因爲它們都包含類似的命名文件。我試圖檢出一個分支,將這些文件移動到一個子目錄中,提交然後合併到主文件中。但是這會導致錯誤:

remote: error: refusing to update checked out branch: refs/heads/CPSP 
remote: error: By default, updating the current branch in a non-bare repository 
... 

什麼是正確的方式來歸檔這個?需要明確的是,我想用一個看起來像這樣的存儲庫,以結束:

Project1/ 
Project2/ 
Project3/ 

只是爲了清楚,這些目錄不顛覆倉庫存在。

我打算只跟蹤顛覆儲存庫,不承諾他們(雖然這將是很好的) Tnx!

+0

嘗試[子樹合併策略](http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories)。 –

+0

看起來像[this]的副本(http://stackoverflow.com/questions/2386662/git-put-a-branch-in-a-subdirectory) – Andy

回答

0

我害怕通過簡單的git操作,你將無法實現這一點。

如果你認爲git存儲庫是一個內容樹,在任何時候它只能有一個快照。所以如果你在不同的遠程分支下映射多個svn倉庫,你將永遠不會同時看到它們。

如果你真的想看到的文件夾在同一類型,下面的方法可能減輕你的痛苦一點點:

  1. 創建父文件夾
  2. 創建PROJECT1文件夾
  3. 進入PROJECT1文件夾和克隆這裏的svn庫
  4. 所有你想跟蹤
  5. 回到父文件夾的項目做同樣的
  6. 創建一個批/腳本去每個項目和拉svn內容

通過上面的方式,實際上你有完全訪問svn,甚至提交。缺點是你不能直接從父文件夾使用任何git命令。

相關問題