2010-11-09 54 views
2

我重建了一個巨大的svn倉庫(超過350GB - 花了超過11天才完成)。 如何驗證新的回購對現有的回購。 我在兩者上都嘗試過「svn ls」,它們是相同的 - 但只是轉儲根目錄。 有沒有更好的方法做,或者我只是做隨機測試?根據目錄,存儲庫有超過600K的修訂版和16K +文件夾。如何驗證重建的svn倉庫

回答

1

你應該在文件級而不是從svn客戶端來比較存儲庫......如果你已經通過dump/load循環創建了它們,它們必須是相同的,除了在加載週期中添加的新修訂版本...所以我會建議做兩個存儲庫樹之間的差異...通過unix diff工具,如果你在unix上...但350 GB的比較將需要它的時間,但你必須支付的費用...

diff -r Repos1 Repos2 

應該是除了新revsions空的結果...

或者你也可以做AA第二svnadmin的轉儲Repos2> repos2.dump並與比較你曾經創造這個的那個。結果應該是一致的...(除了新版本)...

或者寫一個腳本檢出一個數字(或全部?)的revsions從這兩個存儲庫並在該級別進行比較...... 。但我認爲這將需要更多的時間...

1

您可以將每個回購日誌轉儲到一個文件中,並區分日誌文件。

1

svn ls -R轉儲每個文件夾,而不僅僅是根目錄。但它並不能保證所顯示的內容真的有效。

你應該做的一件事是檢查從兩個存儲庫到兩個乾淨目錄的所有內容,並在兩個目錄樹(當然不包括.svn子文件夾)上運行遞歸比較。如果您需要最後一步的建議,請告訴我們您正在使用的操作系統。

當然,這並不檢查版本歷史記錄,但保證至少沒有任何內容缺失。

要對版本歷史進行一些選擇性檢查,請查看一些較舊的版本(例如,某些標記的版本),並按照上述相同的方式進行比較。

1

我想要類似的驗證svn存儲庫對其svnadmin同步克隆複製存儲庫。對於每一個版本號$ R = 1(或0)到HEAD(是svnlook最年輕的),我做了以下內容:

svnadmin dump -q --incremental --deltas -r $r /path/to/repo1 > source.txt 
svnadmin dump -q --incremental --deltas -r $r /path/to/repo2 > target.txt 
diff --text --ignore-matching-lines='^\(UUID: [0-9a-f-]\+\|Prop-delta: true\|Prop-content-length: [0-9]\+\|Content-length: [0-9]\+\|PROPS-END\|\s*\)$' source.txt target.txt 

注:如果是的Source.txt 1GB以上的大,我跳過了警告,否則DIFF差異需要太多內存。有一天,也許我會將差異輸入拆分爲大塊轉儲塊。我還必須添加--deltas,否則我最終會在財產信息方面出現一些虛假的差異。

我認爲這是工作就像我想和給我一些信心(基於svnadmin轉儲),svnadmin同步工作正常。

問候,

  • 馬克