2012-05-16 82 views
1

我需要在Windows中將SVN倉庫從一臺服務器移到另一臺服務器。訣竅是,我想從嵌套存儲庫中的項目中排除除主幹,分支和標記之外的所有內容。移動嵌套SVN倉庫

我目前有一個大型資料庫,所有的項目都在(MyBigRepo)下。目前的結構是:

/Repositories/MyBigRepo/MyProject1/trunk 
/Repositories/MyBigRepo/MyProject1/branches 
/Repositories/MyBigRepo/MyProject1/tags 

/Repositories/MyBigRepo/MyProject2/trunk 
/Repositories/MyBigRepo/MyProject2/branches 
/Repositories/MyBigRepo/MyProject2/tags 

/Repositories/MyBigRepo/MyProject3/trunk 
/Repositories/MyBigRepo/MyProject3/branches 
/Repositories/MyBigRepo/MyProject3/tags 

我只想要移動MyProject1,但我想排除主文件夾MyProject1和正義之舉樹幹,樹枝和從MyProject1庫標籤。我不要想要移動MyProject2MyProject3。換句話說,我的目標是組成我的新庫,類似於下面。

/Repositories/NewRepo/trunk 
/Repositories/NewRepo/branches 
/Repositories/NewRepo/tags 

這裏是我創建辦工作的批處理文件:

:: Create a dump of the old repo 
svnadmin dump %OldRepoPath% > %MyBigRepoDumpFile% 

:: Remove the other projects 
svndumpfilter include "MyProject1" < %MyBigRepoDumpFile% > %MyProject1DumpFile% 

:: Create a new repo 
svnadmin create %NewRepoPath% 

:: Load the dump into the new repo 
svnadmin load %NewRepoPath% < %MyProject1DumpFile% 

我的問題是,該批次仍然創造下%NewRepoPath%這樣的MyProject1目錄:

/Repositories/NewRepo/MyProject1/trunk 
/Repositories/NewRepo/MyProject1/branches 
/Repositories/NewRepo/MyProject1/tags 

是有辦法從我的轉儲文件中排除額外的級別(MyProject1),或者將它向上移動一級,仍然保留歷史記錄?

回答

1

我認爲您最好的選擇是「按原樣」(在額外水平的情況下),然後通過svn copy在新存儲庫中重做結構。

還有一個選項可以調整你dumpfile as described here

0

可以運行兩次過濾流:

  1. 過濾掉 「/庫/ NewRepo/MyProject1 /」 路徑(如您已完成),
  2. 過濾掉 '樹幹','分支'和'標籤'。
+0

這種方法存在一個相當討厭的技術問題:同一個項目的主幹,分支和標籤通常交織在一起,svndumpfilter將無法將它們分開。我試圖做一次類似的事情 - 浪費了幾天時間,最後放棄了。 –

+0

當我運行'svndumpfilter包含「trunk」「branches」「tags」<%MyProject1DumpFile%>%MyProject1DumpFile%'時,我得到一個空的轉儲文件。你知道這可能是爲什麼嗎? – jags0333