2012-06-21 54 views
3

我有一個CVS服務器,上面有數千個CVS存儲庫。它運行的典型配置是允許匿名pserver訪問的項目通過--allow-root參數添加到cvs命令行。問題是,有很多項目,現在cvs命令導致"argument list too long"錯誤。CVS linux服務器有太多的項目,服務器命令導致「參數列表太長」

目前,我目前的解決方案是破解CVS源代碼,將CVS命令行參數從"--allow-root"更改爲"--ar"。它可以工作,但是我有可能在某些時候再次超過命令行長度。

我使用xargs進行了檢查。與此相關的問題是,它似乎必須一次一個地運行每個存儲庫的CVS命令,直到找到傳入的CVS命令中指定的那個命令。

我試圖編寫一個可以從傳入的客戶端命令行獲取存儲庫名稱的包裝器,但我無法這樣做。可能僅僅是我缺乏知識,但我嘗試了一段時間,並找不到有效的方法。

我查看了cvs-pserver腳本,但它做了同樣的事情,將所有存儲庫放在命令行中。我看着cvsd,它也有同樣的限制。

我正式出來的想法。最優雅的解決方案是可以從傳入的客戶端命令獲取存儲庫名稱的CVS包裝器。我很樂意看到這項工作,但任何有用的意見將不勝感激。

+0

在Linux內核> = 2.6.23中,此問題已被[解決](http://kernelnewbies.org/Linux_2_6_23#head-ae2a4a278f6bb0de179f59b3dfc3fbdb2b43bf01)。你是否有機會使用一個更老的內核,或者你確實設法達到了更新的限制? – thkala

+0

目前在內核2.6.18(RHEL5.5)上。我試圖找到一個RHEL6盒子,我看到它是2.6.32。謝謝! – Lummoxx

回答

0

在Linux內核> = 2.6.23中,此問題已被addressed somewhat。最大參數列表大小增加到最大堆棧大小的約25%。

在我的Linux 64位系統上,最大堆棧大小默認爲大約8MB,這爲參數列表留下了大約2MB的空間。例如,每個100字節允許約20,000個程序參數。

由於您使用的是2.6.18內核,因此您應該考慮更新內核。這應該適用於這個特定的問題,你會獲得更新的內核的所有額外好處(和我想的麻煩)。

+0

再次感謝。這就是說,它仍然不是非常高效,不得不使用這麼大的命令行。如果任何人有任何關於如何在服務器上爲可以從傳入的cvs客戶端命令獲取指定存儲庫的cvs編寫包裝的指示器,那就太棒了。 – Lummoxx

+0

@Lummoxx:同意了,因此在我的回答中「解決」,而不是「解決」:-) – thkala