2009-11-19 67 views
3

經過一番研究後,我發現可以將文件從一個倉庫移出另一個倉庫,單獨的倉庫並且仍然保留關聯的歷史記錄。該過程包括將整個repo轉儲到文件,過濾轉儲文件以獲取所需的路徑/文件(假設您不想移動所有文件),然後將所述轉儲文件加載到目標repo中。在SVN中的獨立存儲庫之間移動文件

我在前2個步驟中找到成功,但在最後一步 - 裝貨時遇到了障礙。

從SVN書,存在這表明在目標回購任何不存在的路徑將在加載過程中被創建的示例:

svnadmin load --parent-dir new/subdir/for/project /var/svn/restored < repos-backup 
<<< Started new txn, based on original revision 1 
* adding path : test ... done. 
* adding path : test/a ... done. 

然而,當我運行命令自己(有當然,不同的路徑),我得到如下:

<<< Started new transaction, based on original revision 78 
svnadmin: File not found: transaction '990-tj', path 'myFolder/trunk/templates/default/fireWood' 
* adding path : myFolder/trunk/templates/default/fireWood ... 

我於是馬上踢給一個提示 - 不明的,如果過程成功與否。在檢查存儲庫時,沒有創建新目錄,也沒有加載文件。沒有任何。

任何想法?

+0

我也有這個問題,但我無法解決它。從一個回購到另一個回購是一個乾淨的舉動,所以我最終從一個清理了所有東西,並導入了另一個。但是,當然,我失去了所有的歷史。 – 2009-11-19 20:44:32

+0

嘗試在Subversion郵件列表上詢問。 – 2009-11-21 00:53:03

回答

3

我結束了明確的創建整個目標目錄結構,然後導入過濾的轉儲。現在目標目錄全部存在,導入成功運行。

0

任何想法?

雖然我不能幫你解決這個錯誤,但我的想法是嘗試加載而不提供路徑。這些東西最終會在頂層,但隨着SVN你可以隨時移動它。

(你確實有你的倉庫的一些副本,嘗試所有以,不是嗎?)

+0

是的,當然:P – KOGI 2009-11-30 23:27:59

0

問題可能是在過濾。 Svndumpfilter不處理所有類型的依賴關係,並在幾種情況下默默地忽略必要的修訂。

在這種特殊情況下,請在添加文件之前檢查轉儲文件中是否正確創建了所有目錄。

2

我剛剛清理我的回購,重組他們時運行這種類型的命令。我基本上將所有內容從一個回購站移動到另一個回購站的一個新文件夾,加入類似的項目。

我用

svnadmin dump d:\repoPathToMove > d:\backupFolder\repoName.dump 

,並用於

svnadmin load d:\pathToNewRepo --parent-dir InternalFolder < d:\backupFolder\repoName.dump 

在d:\ pathToNewRepo是通向目的地的回購協議,並InternalFolder是新的文件夾中加載的文件將被存放。如果我創建用於加載的InternalFolder,這將起作用。我在目標瀏覽器上使用Toitoise SVN的RepoBrowser創建了內部文件夾。

剛剛嘗試運行加載而沒有創建文件夾,我得到了你提交的同樣的錯誤。所以我想簡單的方法是添加一個命令來創建缺少的父目錄。

我沒有在這裏使用任何過濾。您還可以通過其他後面寫的轉儲和裝載一個有點速記它:

svnadmin dump d:\repoPathToMove | svnadmin load d:\pathToNewRepo --parent-dir InternalFolder 

避免需要創建轉儲文件