2011-02-12 87 views
52

有時,在更新svn存儲庫時,我收到錯誤「413 Request Entity Too Large」。一旦我收到這個錯誤,它會在我每次嘗試更新本地工作副本時繼續。新的結帳將解決問題,但非常不方便。該項目超過30 GB,SVN存儲庫託管在外部。是什麼導致svn錯誤413請求實體太大?

這發生在過去幾種不同的計算機上,包括Windows開發機器和我們的Linux構建服務器。

我發現的有關此問題的大部分內容涉及大型單個文件(超過2GB)。這裏不是這種情況,因爲最大的文件大約是。 50-60 MB。

有沒有其他人跑過這個之前和/或知道這個原因/解決方案?

回答

47

嘗試下面的配置指令添加到您的Apache配置文件:

LimitXMLRequestBody 8000000 
LimitRequestBody 0 
+0

哦,太感謝你了。我一直有這個確切的問題。你的答案整齊地解決了它。 – 2011-11-01 23:09:23

+0

這是一種絕對的對待,但你知道這背後的邏輯是什麼嗎? – 2013-07-17 08:23:48

+0

@RobForrest默認情況下,Apache服務器限制請求體大小以防止DoS攻擊。 Subversion使用XML請求主體報告服務器的狀態,然後服務器發送更新到這個工作副本。默認限制爲1MB,這對大多數設置都很好,但有時對於大型工作拷貝來說還不夠。 – 2013-07-17 14:33:03

29

我沒有訪問我的回購服務器(IT管理,其週末)。所以我發現我可以通過對subdirs進行svn更新來解決這個問題,直到無法工作爲止。 然後我進入這個目錄直到我停止了413錯誤。然後我可以在更高層次上進行更新。 可能不適合每個人的工作,但可能有助於在緊急情況下

1

此外,如果您運行的mod_security,考慮檢查SecRequestBodyLimit設置。礦井設置得太低,導致問題。

2

我最近有超過10MB的任何文件的這個問題。事實證明,我忘了我用nginx代理svn/apache服務器。在nginx.conf中更改client_max_body_size修復了此問題。我在默認情況下在Apache服務器上留下了LimitXMLRequestBodyLimitRequestBody

4

做了簡短的bash腳本來遍歷子目錄,每MDH的回答是:

for dir in *; do 
    [[ -e $dir ]] || continue 
    echo "Updating $dir" 
    svn up $dir 
done 
svn up