リモート サーバーでは、リポジトリの Git チェックアウトを行うために post-receive フックを設定しています。
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
しかし、ローカル マシンからサーバーの Git リポジトリにプッシュすると、次のエラー メッセージが表示されます。
remote: error: unable to unlink old '<file>' (Permission denied)
これは何度も表示され、ほぼすべてのファイルに対して 1 つのエラー メッセージが表示されます。
ただし、git を使用して変更できる README.txt ファイルがあり、その権限は次のとおりです。
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
しかし、まったく同じ所有者と同じ権限を持つ他のファイルでは、同じエラーが発生します。
別の Web サイトの別のローカル リポジトリには、ローカル マシンのユーザー名を所有者とするファイルがあり、リモート サーバーにプッシュすると、ファイルのリモート サーバーの所有者が尊重され、問題なく動作します。
明らかに権限関連のエラーのようですが、修正方法が見つかりません。何か提案はありますか?
ベストアンサー1
ファイルのリンクを解除する必要がある場合、ファイルではなく、ファイルが存在するディレクトリに対して「w」権限を持っている必要があります...