我收到错误:
remote: error: cannot run hooks/post-receive: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当试图推送到远程.post-receivce文件存在于正确的位置(testnew.git/hooks)并包含:
#!/bin/bash2
export GIT_DIR=/var/www/testnew/testnew/.git/
export GIT_WORK_TREE=/var/www/testnew/testnew/
cd /var/www/testnew/testnew/
echo "here we go..."
git fetch
git merge origin/master
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方式设置接收后的权限:
chmod a+x post-receive
Run Code Online (Sandbox Code Playgroud)
但这会产生同样的错误.将权限设置为755会删除错误,但脚本不会运行.
Jan*_*dec 31
如果hooks/post-receive文件存在,标记为可执行但无法执行,则会发生这种情况.它无法执行,因为解释/bin/bash2器不存在或不可执行.
替换/bin/bash2存在且在服务器上可执行的bash的名称.
(错误看起来像是这样,操作系统只返回错误状态,"没有这样的文件或目录",但不报告哪个文件不存在.并且试图执行它的代码不知道系统已经读过hooks/post-receive并且正在寻找/bin/bash2.它只知道是它试图运行hooks/post-receive,所以这就是打印的内容).
Xtr*_*ith 17
此外(有关此问题的未来参考和文档)如果您要echo $SHELL在shell中运行,您应该会看到预期的结果,在这种情况下(基于批准的答案),您期望得到/bin/bash结果.但另一个可能的问题可能是看不见的回车.
hooks/post-receive如果您仍然遇到问题,请尝试运行,您可能会得到如下响应:
-bash: hooks/post-receive: /bin/bash^M: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这里的关键^M是证明你实际上得到了一个意想不到的回车,否则如果它有效,你可能会得到一个悬而未决的回应.
修复它,它应该解决你的问题.这样做的方法,使用dos2unix,例如:
dos2unix .htaccess
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14443 次 |
| 最近记录: |