服务器上的Git post接收挂钩错误



我正试图在服务器上安装一个git"post-rereceive"。我在挂钩文件上使用以下代码:

#!/bin/bash
#CONFIG
LIVE="/home/ubuntu/public_html/testing"
read oldrev newrev refname
if [ $refname = "refs/heads/master" ]; then
  echo "===== DEPLOYING TO LIVE SITE ====="
  unset GIT_DIR  
  cd $LIVE
 # ssh-agent $BASH
 # ssh-add /home/ubuntu/.ssh/ubuntu
  git pull --verbose origin  master || echo "git-pull: returned error code"     
  echo "===== DONE ====="
fi

每当我试图将某些东西从本地pc推送到服务器时,它都会显示以下错误mesasge:

===== DEPLOYING TO LIVE SITE =====
remote: error: cannot open .git/FETCH_HEAD: Permission denied
remote: 
remote: git-pull: returned error code
remote: ===== DONE =====

有人能帮忙解决什么问题吗?

只是为了确认一下,我已经尝试使用相同的用户凭据通过ssh终端运行该命令,它运行得很好。

提前谢谢。

最后,我通过将目录(/home/ubuntu/public_html/testing)的所有权更改为正在提交/运行钩子的用户来解决这个问题。

每当我收到关于权限和FETCH_HEAD的错误消息时,都是因为我在修补某些东西时意外地以root身份进行了拉操作,这会在root拥有的.git目录中创建文件,而我的普通ssh用户无法覆盖这些文件。

我通常运行ls -laR .git | grep root(我相信有更好的方法,我不是系统管理员)来检查是否有root拥有的任何文件。只要把它们咬回去,我就能像往常一样继续。

最新更新