You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行hg git pull触发打开文件过多错误的问题求助

解决Mac上Mercurial+hg-git迁移后hg pull报“打开文件过多”的问题

我之前在跨平台迁移Mercurial跟踪Git的仓库时,也碰到过类似的文件句柄耗尽问题,结合自己的排查经验和社区方案,给你几个可行的解决方向:

  • 临时调高Mac的文件描述符限制
    Mac默认的单进程文件句柄上限比Windows低很多,而hg-git依赖的dulwich在同步Git仓库时可能会批量打开大量文件。你可以先在终端里临时调高限制:

    ulimit -n 4096
    

    执行完后再尝试hg pull。如果临时有效,想要永久修改的话,根据你使用的shell编辑对应的配置文件:

    • Bash用户:编辑~/.bash_profile,添加ulimit -n 4096
    • Zsh用户:编辑~/.zshrc,添加ulimit -n 4096
      保存后重启终端即可生效。
  • 清理dulwich的缓存文件
    跨平台迁移后,dulwich的缓存可能残留了Windows环境下的无效数据,导致处理时异常打开大量文件。你可以:

    1. 删除仓库本地的缓存:进入仓库的.hg/cache目录,删除所有以dulwich开头的文件夹
    2. 删除全局Mercurial缓存:找到~/.hgcache目录,同样清理其中的dulwich相关缓存
      清理完成后重新执行hg pull。
  • 重置hg-git的仓库关联
    迁移过程中可能导致hg-git的映射配置出现异常,你可以尝试重置关联:

    hg git unmap
    hg git map
    

    重新建立映射后再尝试拉取操作。

  • 禁用Git子模块处理(如果有子模块)
    如果目标Git仓库包含子模块,Mercurial在同步时可能会递归打开子模块的所有文件,触发句柄上限。你可以临时在仓库的.hgrc里添加配置:

    [git]
    submodules = false
    

    保存后再执行hg pull,确认是否解决问题。

  • 尝试回退Mercurial版本
    虽然你当前用的是最新版,但新版本的Mercurial/dulwich可能和Mac系统存在兼容性问题,而你Windows端用的是4.4.2。可以尝试在Mac上安装Mercurial 4.x系列的稳定版本(比如4.8.x),看看是否能复现Windows上的正常状态。

内容的提问来源于stack exchange,提问作者EvgeniySharapov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:18:02