2010-09-17 39 views
3

當我試圖加載/恢復我的SVN倉庫,我得到的錯誤:svnadmin的:將svndiff含有太大的窗口

svnadmin: Svndiff contains a too large window

我怎樣才能解決這個問題?

+0

我對所有解決方案都非常感興趣,看起來這是一個介於1.6.4之後的bug,從那以後從未得到解決:/ – Capsule 2011-02-10 09:12:27

+0

您的存儲庫包含哪些大小文件?我處於相同的情況,並且在回購中有大約20MB的文件。 – plasmid87 2011-04-20 10:46:39

回答

0

我發現了這個問題的原因,這可能會幫助你解決它 - 雖然這將很大程度上取決於你在存儲庫中的文件類型。

SVN中的文件通過名稱和文件哈希記錄(我相信它們是MD5'd)。如果您刪除文件然後嘗試再次上傳同一文件,SVN 會記住散列,而不是創建新的基本增量文件,它會將其指向它存在的先前修訂版本。

在存儲庫生命中的某個時刻,您的文件已變成「中毒」。任何匹配文件MD5的文件(不管提交路徑如何)都會導致svndiff進程失敗(原因仍然不完全清楚),因爲SVN會嘗試使用舊的和損壞的修訂版本。如果您想「修復」問題,請在本地修改文件(如果其代碼嘗試添加空白註釋),這將導致MD5更改。刪除文件並提交新的「固定」版本後,服務應該照常恢復。

現在,回到我的第一段 - 這種解決方案只能真正適用於您可以改變的文件。例如,如果你有一個100MB的視頻文件 - 那麼你需要修改它以某種方式更改散列。如果你使用可執行文件,它會變得更糟,因爲這些文件在編譯後非常難以執行。

我的建議如下:

  • 如果它是一個基於文本的文件,儘量使化妝的機會(如空白的意見,額外的換行符等)
  • 如果它是一個可執行二進制文件,請嘗試重新編譯它。
  • 對於所有其他二進制文件(圖像,視頻等),您需要根據修改方式來靈活操作。

我希望這有一些幫助,這是一個真正的痛苦到這個問題的底部。

4

因爲我碰到了今天這個......

有可能與FSFS數據庫中的svn庫一個損壞的修訂版本。

備份您的SVN存儲庫。

確定您的存儲庫是通過讀取$ {} REPO/DB /格式打包/分片

[[email protected] db]# cat format 
4 
layout linear 

如果您FSFS數據庫「佈局分片」你需要獲得fsfs-reshard.py這裏: http://ymartin59.free.fr/wordpress/wp-content/2010/07/fsfs-reshard.py

(這是版本在1.6以上的版本庫工作,這傢伙的補丁仍然沒有移植到svn中繼)。

運行以下解壓庫:

./fsfs-reshard。PY $ {} REPO 0

運行驗證:

svnadmin verify ${REPO} 

* Verified revision 13689. 
* Verified revision 13690. 
* Verified revision 13691. 
svnadmin: E185001: Svndiff contains a too-large window 

是有差錯出來的是修訂版1比最後校驗修訂更大的版本,我們的壞REV爲13692.

獲取fsfsverify。 py從Subversion中繼。 http://svn.apache.org/repos/asf/subversion/trunk/contrib/server-side/fsfsverify.py

在錯誤的修訂版上運行fsfsverify.py。您可能需要兩次或更多次運行-f選項。這會吐出大量的數據,但最終它會變得乾淨。

[[email protected] archive]# ./fsfsverify.py -f ${REPO}/db/revs/13692 
Copy 464bytes from offset 1006867 
Write 464bytes at offset 1003542 
Fixed? :-) Re-run fsfsverify without the -f option 
[[email protected] archive]# ./fsfsverify.py ${REPO}/db/revs/13692 

運行svnadmin再次驗證。重複上述過程進一步修改錯誤。

一旦你有一個驗證庫,你可以通過運行

./fsfs-reshard.py ${REPO} 1000 

運行svnadmin的又一次驗證改裝!

你的SVN倉庫應該沒關係!

+0

不知道,如果這個工作,但純粹努力+ 1 – demoncodemonkey 2013-07-24 19:20:34

+0

謝謝。這有助於我的情況。 – radmen 2016-04-20 11:44:50