3

我有一个 CVS 服务器,上面托管了数千个 CVS 存储库。它以典型配置运行,其中允许匿名 pserver 访问的项目使用--allow-root参数添加到 cvs 命令行。问题是,项目太多,现在 cvs 命令会导致"argument list too long"错误。

目前,我目前的解决方案是破解 CVS 源代码,将 CVS 命令行参数从"--allow-root"更改为"--ar". 它有效,但有可能我会在某个时候再次超过命令行长度。

我使用xargs. 问题在于,它似乎必须为每个存储库运行 CVS 命令,一次一个,直到找到传入 CVS 命令中指定的命令。

我试图编写一个可以从传入的客户端命令行获取存储库名称的包装器,但我无法这样做。可能只是我缺乏知识,但我尝试了一段时间,找不到有效的方法。

我查看了cvs-pserver脚本,但它做同样的事情,将所有存储库放在命令行中。

我看了看cvsd,它也有同样的限制。

我正式没有想法。最优雅的解决方案是 cvs 包装器,它可以从传入的客户端命令中获取存储库名称。我很想看到这项工作,但任何有用的输入将不胜感激。

4

1 回答 1

0

在 Linux 内核 >= 2.6.23 中,此问题已得到一定程度的解决。最大参数列表大小增加到最大堆栈大小的大约 25%。

在我的 Linux 64 位系统上,最大堆栈大小默认约为 8MB,为参数列表留下了大约 2MB 的空间。例如,每个 100 个字节允许大约 20,000 个程序参数。

由于您使用的是 2.6.18 内核,因此您应该考虑更新内核。这应该可以解决这个特定问题,并且您将获得更新内核的所有额外好处(和麻烦,我想)。

于 2012-06-21T19:22:31.763 回答