我正在尝试使用我的 OS X 桌面(主要作为测试用例)设置一个内部 git 服务器。当涉及 SSH 密钥时一切正常,但我目前正在尝试使用 git-daemon 进行只读克隆。如果我在终端中启动 git-daemon:
sudo -u git git-daemon --basepath=/Users/git/repos/ --export-all
然后一切正常,例如
git clone git://localhost/My_Project.git
但是当我尝试使用 launchd 进行设置时,它会拒绝所有请求。我正在使用这个 plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>git</string>
<key>UserName</key>
<string>git</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/path/to/git-daemon</string>
<string>--base-path=/Users/git/repos/</string>
<string>--export-all</string>
</array>
</dict>
</plist>
如果我尝试克隆 My_Project,则会收到以下错误:
Cloning into My_Project...
fatal: The remote end hung up unexpectedly
令人沮丧的是,我相信这曾经可以工作,因此问题可能与我的 plist 文件或使用 launchd 的关系不大,而更多地与可能已更改的任何网络设置有关。任何建议将不胜感激。
抱歉,这更像是一个系统管理员问题,但我认为开发人员可能在这里有一些经验。
更新:如果 repo 存在,控制台会报告以下错误:
git[431]
error: cannot run upload-pack: No such file or directory