我的目標是將舊的 SVN 儲存庫從 Windows VisualSVN 伺服器轉移到 Linux Apache SVN 伺服器。第一步是使用 svnadmin dump 指令轉儲所有儲存庫。之後我將這些轉儲載入到我的 Linux 伺服器中。我導入存儲庫時沒有錯誤。但是,對於某些文件,我在提交更改時收到 500 內部伺服器錯誤。
為了檢查問題所在,我在網頁瀏覽器中開啟了一些產生錯誤的檔案。我發現這些文件的最後幾行已損壞。沒有資料遺失,但文件末尾有奇怪的字元。它們顯示為:“???”在我的網頁瀏覽器中。
我嘗試進行多次導出,但所有導出都會導致相同的問題。是否可以更正儲存庫或轉儲?你知道我該如何防止這種情況發生嗎?
答案1
- AFAICR,某些版本先前儲存庫的結構|資料|儲存發生了一些變化:如果 VisualSVN Server 和 apache 端的 Subversion 版本相同(即升級 VisualSVN Server,如果需要)
- 從 FS 角度來看,VisualSVN Server 中的儲存庫和 Linux 的 Apache 是相同的 - 只是包含檔案的目錄和一些非儲存庫檔案。因此,在最簡單的情況下,您可以將樹從RepoRoot 複製到新伺服器(根據新作業系統要求修復所有者和權限),添加(舊)密碼檔案(如果需要),放置在repo-tree 和(舊)authz 之外-file(如果需要),將 svn 相關部分從 VisualSVN Server 的 httpd.conf 遷移到新環境(應用所有需要的更改,主要與路徑相關),並將儲存庫放在新位置
PS:我執行的這種懶惰的「複製貼上」遷移沒有太大的麻煩
提交時出現 500 內部伺服器錯誤
可能有兩個主要原因:未遷移用戶庫和|或忘記了 authz 文件中的 ACL(可能丟失或為空) - 存儲庫轉儲不會傳輸這些文件