Dump
我如何估計轉儲整個 repo 所需的最終大小和處理時間?
假設一個 SVN 設置由一個帶有嵌套項目文件夾的 repo 組成,如下所示:
\ - trunk - - projectA - - - trunk - - - - ... - - - branches - - - - ... - - projectB - - - trunk - - - - ... - - - branches - - - - ... - ...
整個 repo 在磁碟上大約有 40GB,最後一次有 17605 次送出。我現在需要從儲存庫中提取單個項目以在單獨的 SVN 伺服器上進行設置,據我所知,這只有
svnadmin dump
在整個儲存庫上使用然後svndumpfilter
用於隔離我需要的項目才能實現。我完全預計這將需要很長時間才能完成初始轉儲。是否有一個很好的公式可以準確計算最終轉儲文件需要多長時間以及需要多少磁碟空間?另外,我聽說轉儲操作在執行時使用 100% CPU。真的嗎?或者,考慮到回購的規模,有沒有更好的方法來解決這個問題?(除了只是進行導出並失去修訂歷史之外。)
是否有一個很好的公式可以準確計算最終轉儲文件需要多長時間以及需要多少磁碟空間?
為避免磁碟 I/O,您可以將
svndumpfilter
結果通過管道傳輸到netcat
.在舊的 SVN 伺服器上:
svnadmin dump /path/to/your/repo/ | svndumpfilter --drop-empty-revs --renumber-revs include single_project | nc -l 2302
在新的 SVN 伺服器上:
svnadmin create single_project nc IP_address 2302 | svnadmin load single_project
我已經用我的 repo 進行了測試(4GB,~12000 次修訂),大約需要 12 分鐘才能完成。
PS:您也可以使用
gzip
壓縮數據並ionice
以低優先級執行它。