我們在 Windows Server 2003 上有一個 Subversion 儲存庫,並希望將其移至執行 Server 2008 R2 64 位元的新伺服器。新伺服器有 8 GB 記憶體。
我希望轉儲並加載整個存儲庫,因為它目前是 1.5 之前的格式。此儲存庫僅有 20,000 多個修訂。在修訂版 12900 上,無論我如何嘗試匯入該版本,svnadmin 進程都會耗盡記憶體。
我嘗試從一個大轉儲文件加載整個內容。我嘗試將整個轉儲直接通過管道輸送到負載中。我還嘗試過以兩種方式進行較小的修訂集。甚至只是單獨嘗試這項修訂版。
該進程在任務管理器中使用了大約 1998 mb,然後因以下錯誤而終止:
D:\Repositories\svnrepos>svnadmin load ./ < c:\Backup\svn_12900.dmp <<< 開始新事務,基於原始修訂版 12900 * 編輯路徑:.../Bld/Installers ... 完成。 * 編輯路徑:.../Bld/Installers/xyxSetup.exe ... 完成。 * 編輯路徑:.../Installers/xyxyWebSetup.exe ... 已完成。 * 編輯路徑:.../Bld/Src ...記憶體不足 - 終止應用程式。
此應用程式已請求運行時以異常方式終止它。請聯絡應用程式的支援團隊以獲取更多資訊。
我已經檢查了日誌中的版本號,它實際上只是提交自動構建,因此安裝程式可以正常匯入,然後在失敗時僅在 AssemblyInfo.cs 檔案中匯入版本號。
我不確定我還應該嘗試什麼?
答案1
在 64 位元 Windows 上使用 32 位元版本的 svn 意味著 svn 只能分配 2GB 記憶體。取得 64 位元版本的 subversion。
我不再記得 svn 的流加載演算法,但它可能認為你有 8GB 可用,並在它本身無法管理超過 2GB 時終止。
答案2
我建議將此問題郵寄至[電子郵件受保護],因為這個清單包含了許多顛覆系統管理員。至少他們中的一些人可能以前見過這個問題。
答案3
試試 svn-kit。這是顛覆的java埠。