Hg Git Pull 导致打开文件过多错误

Evg*_*pov 3 python macos mercurial hg-git dulwich

我有一个跟踪 git 存储库的 Mercurial 存储库。它在 Windows 10 上运行正常。现在我将它作为目录移动到 Mac,然后运行hg reset -Ca只是为了清理它。现在我正在尝试运行hg pull它会导致如下错误:

% hg --traceback --verbose pull                                                                                                255 ?
pulling from git+https://someserver/somerepo.git
Traceback (most recent call last):
  File "/Users/user/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/scmutil.py", line 154, in callcatch
  File "/Users/user/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/dispatch.py", line 314, in _runcatchfunc
.....
  File "/Users/user/.pyenv/versions/2.7.14/lib/python2.7/site-packages/dulwich/pack.py", line 1004, in __init__
  File "/Users/user/.pyenv/versions/2.7.14/lib/python2.7/site-packages/dulwich/file.py", line 90, in GitFile
IOError: [Errno 24] Too many open files: '/Users/user/Projects/somerepo/.hg/git/objects/pack/pack-c03bf69ae597535d876f0dd30ddd6458f2c3f1ff.pack'
abort: Too many open files: /Users/user/Projects/somerepo/.hg/git/objects/pack/pack-c03bf69ae597535d876f0dd30ddd6458f2c3f1ff.pack
Run Code Online (Sandbox Code Playgroud)

我检查了一下,看起来我有最新版本的hg-gitdulwich

dulwich (0.18.6)
hg-git (0.8.10)
Run Code Online (Sandbox Code Playgroud)

Mercurial 也是最新的

% hg --version 
Mercurial Distributed SCM (version 4.5)
Run Code Online (Sandbox Code Playgroud)

我在 Windows 上检查了 Mercurial 的版本,这4.4.2是否重要。我想知道是否有人遇到过这样的问题,也许有解决方法或修复方法。

Joh*_*nck 7

ulimit -n你的 Mac上说的是什么?这是对打开文件数的限制。然后尝试运行ulimit -n N比以前更大的 N,然后再次运行 hg 命令。

如果您不止一次遇到此问题,您可能希望每次登录时都将ulimit -n N命令放入您的命令中~/.bashrc以运行它。

  • 令人惊讶的是它确实有帮助。我正在通过`sysctl`检查打开文件的数量。`sysctl kern.maxfiles` 返回 `kern.maxfiles: 49152` `sysctl kern.maxfilesperproc` 返回 `kern.maxfilesperproc: 24576` 使用 `ulimit -n` 返回 256。调用 `ulimit -n 512` 解决了这个问题。 (3认同)