3

サーバーで git 'post-receive' を実行しようとしています。フック ファイルで次のコードを使用しています。

#!/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 からサーバーに何かをプッシュしようとすると、次のエラー メッセージが表示されます。

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

誰でも何が問題になるのか助けてもらえますか?

確認のために、同じユーザー資格情報を使用して ssh ターミナル経由でコマンドを実行しようとしましたが、問題なく動作しました。

前もって感謝します。

4

2 に答える 2

2

最後に、ディレクトリ(/ home / ubuntu / public_html / tests)の所有権を、フックをコミット/実行しているユーザーに変更することで、問題を解決することができました。

于 2012-09-17T17:48:14.057 に答える
0

パーミッションとFETCH_HEADに関するエラーメッセージを受け取ったときはいつでも、rootが所有する.gitディレクトリにファイルを作成するときに、rootとして誤ってプルしたため、通常のsshユーザーは上書きできません。 。

私は通常ls -laR .git | grep root、rootが所有するファイルがあるかどうかを確認するために実行します(より良い方法があると確信しています。私はシステム管理者ではありません)。それらを単にchownするだけで、通常どおり続行できます。

于 2012-09-13T19:45:19.297 に答える