Phabricator无法识别本地Git仓库路径的问题求助
解决Phabricator无法识别本地Git仓库观测路径的问题
核心问题诊断
你遇到的phabricator-ssh-exec: Unrecognized repository path错误,本质是用错了观测本地仓库的协议:你的仓库和Phabricator在同一机器上,却用SSH协议的URI去指向服务器本地路径,但Phabricator的SSH服务只负责处理它自身托管的仓库(即/diffusion/X/或/source/...这类虚拟路径),根本不支持通过SSH访问服务器上的任意本地绝对路径。
快速修复步骤
直接抛弃SSH格式的观测URI,改用本地文件系统路径配置:
- 进入Phabricator的仓库设置,删除你之前添加的所有
ssh://git@phabricator.localhost.com:2222/xxx格式的观测URI - 新建一个URI:
- 模式选择观测,设置为隐藏
- URI填写仓库的本地绝对路径:
/var/repos/git/test(或者file:///var/repos/git/test,两种格式都支持)
- 验证凭据(本地路径无需额外SSH凭据,只要Phabricator运行用户有权限即可)
- 重新激活仓库,再尝试更新工作副本
为什么你的配置会失败?
Phabricator的phabricator-ssh-exec脚本是专门处理Git SSH请求的,但它只识别Phabricator内部生成的虚拟仓库路径:
/diffusion/<仓库短标识>//diffusion/<仓库ID>//source/<仓库名称>/
这些路径并不是服务器上的真实文件路径,而是Phabricator用来映射自身托管仓库的内部规则,所以你直接传入服务器的真实绝对路径(比如/var/repos/git/test),脚本完全无法识别,就会抛出你看到的错误。
验证权限是否达标
从你提供的权限配置来看,已经满足本地访问的要求:
- 仓库目录
/var/repos/git/test权限为775,所属组是wdev - Phabricator的运行用户
phd和apache都属于wdev组,拥有读取权限
如果还是担心权限问题,可以手动用Phabricator运行用户测试访问:
sudo -u phd git ls-remote /var/repos/git/test
如果这个命令能正常输出仓库的分支/标签信息,说明权限完全没问题。
补充说明
你之前测试的SSH连接echo {} | ssh -p 2222 git@phabricator.localhost.com conduit conduit.ping正常,是因为这个请求走的是Phabricator的Conduit API通道,和Git仓库的SSH访问逻辑完全不同,所以这个测试通过不代表Git仓库的SSH路径配置正确。
内容的提问来源于stack exchange,提问作者RJ Cole
相关产品推荐
相关产品推荐

