【发布时间】:2012-03-01 12:50:21
【问题描述】:
场景
- 我可以访问这个旧的 linux 服务器,它不再接收任何类型的更新。只有打破和修复。服务器上没有安装 git,所以我在本地用户的 ~/opt/bin 上安装了它。我将目录添加到我的路径中,并且为了在服务器上进行开发,我可以使用 git 完成几乎所有我需要做的事情。
- 我认为在我的工作站上进行开发并推送到准备好的生产代码会很酷。
- 我在我的服务器上设置了一个裸存储库,在我的 GIT_WORK_TREE 中创建了一个带有 checkout -f 的 post-receive 文件,似乎一切都已相应设置。
问题
当我尝试推送我的主分支时,我收到以下错误:
sh: git-receive-pack: command not found
fatal: The remote end hung up unexpectedly
我知道为什么会这样。我的 SSH 上的 $PATH 只看到 /usr/bin:/bin:/usr/sbin:/sbin
我的用户是使用 /bin/sh shell 设置的,因此不能使用 .profile/.bashrc/.bashprofile。
我也不能使用 .ssh/environment,因为我的 PermitUserEnvironment 设置为 no。
我试图创建一个钩子/预接收并在那里设置路径,但这也不起作用。
知道如何让 SSH 看到 git 并使其正常工作吗?
谢谢
【问题讨论】:
标签: git shell deployment ssh non-interactive