2012-09-13 5 views
3

서버에서 '수신 후'를 보내려고합니다. 나는 후크 파일에 다음 코드를 사용하고 있습니다 :서버에서 수신 후 후크 오류가 발생했습니다.

#!/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 터미널을 통해 명령을 실행하기 위해 동일한 사용자 자격 증명을 사용하려고했지만 정상적으로 작동했습니다.

미리 감사드립니다.

+0

푸시/가져 오기/가져 오기 작업에 어떤 프로토콜을 사용하고 있습니까 (예 :'git-daemon'을 실행 중인지 또는 모든 것이'ssh + git : // '). 'git-daemon'을 사용한다면, 데몬의 사용자 ID (그리고 당신의 후킹을 실행하는 사용자)가 당신의 "라이브"저장소를 읽고 쓸 수 있습니까? – twalberg

+0

공개 키 인증과 함께 ssh를 사용하고 있습니다. 괜찮지 않니? 또한, 내가 추진하고있는 사용자는 서버와 내 로컬 PC에서 동일한 개인 키를 공유합니다. 괜찮지 않니? 아니면 다른 방법으로 제안 하시겠습니까? 감사. – Rana

+0

ssh를 사용하는 것이 좋습니다 ... 위의'git-daemon '을 사용하여 언급 한 시나리오는 과거에 실행 한 시나리오입니다. 그래서 여러분이보고있는 것에 대한 하나의 가능한 설명이라고 생각했지만, 그렇지 않은 것 같습니다. 경우. – twalberg

답변

2

마침내 필자는 커밋/실행 후크 사용자 (/ home/우분투/public_html/testing)의 소유권을 변경하여 해결할 수있었습니다.

0

권한 및 FETCH_HEAD에 대한 오류 메시지가 표시 될 때마다 실수로 root 권한으로 풀링을했기 때문에 루트 권한으로 소유 한 .git 디렉토리에 파일을 만드는 무언가를 사용하여 정상적인 ssh 사용자 덮어 쓸 수 없습니다.

나는 보통 루트가 소유 한 파일이 있는지 확인하기 위해 ls -laR .git | grep root을 실행합니다 (더 좋은 방법이 있습니다. 나는 sysadmin이 아닙니다). 간단히 chown'ing 그들이 정상적으로 계속할 수 있습니다.

+0

안녕하세요, 내가 확인한 파일을 적절한 사용자가 소유하고 있으므로 그 부분에서 아무런 문제가 없습니다. – Rana

+0

나는 'git'사용자 (gitolite가 설치되어있는 사용자)에게 소유권을 변경하여 해결할 수있었습니다. 그러나 이제는 또 다른 문제가 있습니다. 스크립트는 웹 서버/아파치에서 실행되지 않고 업데이트됩니다. 어떤 아이디어가 문제 일 수 있습니까? – Rana

관련 문제