2013-04-17 116 views
2

我正在將SVN存儲庫遷移到Git。使用svn2git將svn repo轉換爲git repo時更改文件夾結構

的SVN結構就像圖所示

Root 
    + branches 
     + b1 
     + b2 
     + development_branches 
      + d1 
      + d2 
    + tags 
    + trunk 

這裏的情況是文件夾分支包含另一個子目錄development_branches又包含幾個分支。

當我使用svn2git時,將其轉換爲git存儲庫。文件夾development_branches被認爲是一個單獨的分支。下面是一個使用svn2git

Root 
    + b1 
    + b2 
    + development_branches 

Git的分支結構有可能使svn2git考慮該文件夾的內容「development_branches」作爲單獨的分支,而不是,或有在Git的一種方式,這將使標記的文件夾在文件夾development_branches內部作爲單獨的分支?

在此先感謝

回答

1

我不知道這是否是做的正確的方式,但它似乎工作。如果這不正確,歡迎您提供反饋。

的策略是這樣 1.創建從分支「development_branches」分支,一個用於每個子文件夾 2.退房新創建的分支和使用命令的git濾波器分支來替換根內容與內容該子目錄的

git filter-branch -f --subdirectory-filter <subdirectory_name> HEAD 

所以,對於在問題中所示的GIT中的結構,我使用的命令以下

$ git checkout development_branches 
$ git branch d1 
$ git branch d2 
$ git checkout d1 
$ git filter-branch -f --subdirectory-filter d1 HEAD 
$ git checkout d2 
$ git filter-branch -f --subdirectory-filter d2 HEAD 
$ git branch -d development_branches 

在此之後,新的GIT中結構

Root 
    + b1 
    + b2 
    + d1 
    + d2 
+1

適合我 - 謝謝vumaasha!我嘗試了Ruby Gem svn2git,但無法通過「命令失敗:git checkout -f master」錯誤... – MarkHone

相關問題