我在 Max OS X 10.6.2 上使用 Bazaar v2.0.1
当我在移动大量文件/目录(超过 10,000 个)后执行提交时,我收到以下错误消息:
bzr:错误:[Errno 24] 打开:打开的文件太多:'。'
我的第一个解决方法是将提交分成几个子集。然而,这并不理想,我担心可能会有一个变化(不能分解成子集)会给我同样的错误。
[更新]
在做了一些研究之后,这是我发现的:
看起来像:
Errno 24“打开:打开的文件太多”
是一个 Python 错误。
根据这篇博文,可以在 Python 脚本中使用resource.setrlimit
. 但是,我真的在寻找一种方法来更改默认值,以便 Bazaar 会自动以更高的值运行(顺便说一句,我的默认设置似乎是 2560)。
根据setrlimit系统调用的苹果文档,有一个名为ulimit的 sh 内置命令,可用于更改设置。任何从 shell 启动的进程都会继承这个值。
我目前的解决方法是添加ulimit -n 10240
到~/.profile。这样,当我bzr commit
从 shell 运行时,它将能够打开 10240 个文件。我选择了 10240 个文件,因为这是 Mac OS X 中用户进程允许的最大值。
Bazaar 似乎不需要同时打开那么多文件。我担心如果我移动更多文件,这可能会再次咬我。这是Bazaar中的错误吗?还有什么我可以做的吗?