我在设置 gitolite 时遇到问题。服务器是 Mac OS X Server 10.5.8,客户端是 Mac OS X 10.6.6。两者都运行从源代码编译的 git 1.7.3.4。
我尽可能地遵循文档,但它确实需要大修,而且有些地方令人困惑。我认为作者没有对其进行测试。
我使用了“根方法”安装。问题是当我运行最后一步时:cd; git clone git@server:gitolite-admin
以下是客户端发生的情况:
tom@client$ ssh[电子邮件保护]信息 你好,汤姆,这里的 gitolite 版本是 v1.5.8-22-g6bcb5c1 gitolite 配置为您提供以下访问权限: RW gitolite 管理员 @R_ @W_ 测试 tom@client$ git 克隆[电子邮件保护]:gitolite 管理员 克隆到 gitolite-admin... 无法执行“git”:/usr/local/bin/gl-auth-command 第 176 行处没有该文件或目录。 致命:远端意外挂断
从https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd
因此,调试起来要容易得多。只需运行
ssh git@server info
。如果这能让你获得 gitolite 版本和访问信息,则一切正常。如果它要求你输入密码,请参阅本文档的第一部分以获取帮助。
因此我得出结论,gitolite 的 SSH 部分已正确配置。
服务器:
admin@server$ su-git 密码: git@server$ 哪个 git 在 /usr/local/bin/git git@server$ 哪个 gl-auth-command /usr/local/bin/gl-auth 命令 git @服务器$ tail -n 2 /usr/local/bin/gl-auth-command $repo = "'$REPO_BASE/$repo.git'"; exec("git", "shell", "-c", "$verb $repo") 除非 $verb 等于'git-init';
git 在服务器上可用,就像在 git 用户的$PATH
.
我使用“tail”来显示最后两行,175 和 176,因为显然最后一行是失败的行。
到底出了什么问题?我一直为此绞尽脑汁。
答案1
这看起来可能与此处描述的问题相同:
Mac 上的 gitolite 设置 => git-upload-pack:未找到命令
交互式会话不一定具有与非交互式会话相同的环境变量设置。尝试将 git 的 PATH (/usr/local/bin) 添加到 git 用户的 shell init 文件中,该文件在交互式和非交互式会话中都会读取。如果 git 用户的 shell 是 bash,请尝试 ~git/.bashrc 。
答案2
如果 gl-auth-command 无法找到 git 安装位置,您可以$GIT_PATH
在文件中设置变量。请参阅gitolite.rc
http://sitaramc.github.com/gitolite/doc/gitolite.rc.html了解更多信息。
当从 ssh 运行 gl-auth-command 时,/usr/local/bin/ 似乎不是 $PATH 的一部分,因此您的 shell 必须在您正常登录时添加它,但在非登录非交互式使用期间则不能添加它。