Я использую Bazaar v2.0.1 на Max OS X 10.6.2
Когда я выполняю коммит после перемещения большого количества файлов / каталогов (более 10000), я получаю следующее сообщение об ошибке:
bzr: ОШИБКА: [Errno 24] открыто: слишком много
открыть файлы: '.'
Мой первый обходной путь состоял в том, чтобы разбить коммит на несколько подмножеств. Однако это не идеально, и я боюсь, что может быть момент, когда одно изменение (которое не может быть разбито на подмножества) даст мне ту же ошибку.
[Update]
После некоторых исследований я нашел следующее:
Похоже:
Errno 24 "open: Too many open files"
- ошибка Python.
Согласно этой записи в блоге ограничение на количество открытых файлов может быть изменено из скрипта Python с помощью resource.setrlimit
. Однако я действительно искал способ изменить значение по умолчанию, чтобы Bazaar автоматически запускался с более высоким значением (кстати, похоже, что моей настройкой по умолчанию было 2560).
Согласно документации Apple для системного вызова setrlimit существует встроенная команда sh под названием ulimit , которую можно использовать для изменения настройки. Любой процесс, запущенный из оболочки, будет наследовать это значение.
Мой текущий обходной путь - добавить ulimit -n 10240
к ~ / .profile . Таким образом, когда я запускаю bzr commit
из оболочки, он сможет открыть 10240 файлов. Я выбрал 10240 файлов, поскольку это максимально допустимый пользовательский процесс в Mac OS X.
Не похоже, что для Bazaar нужно открывать столько файлов одновременно. Я обеспокоен тем, что если я когда-нибудь переместлю больше файлов, это может снова вернуться к укусу. Это ошибка на базаре? Я могу еще что-нибудь сделать?