このガイドhttp://toroid.org/ams/git-website-howtoに従った後、Gitを使用していくつかのWebサイトを維持しています
ローカル リポジトリに変更を加えてコミットし、サーバー上のリモート リポジトリに git push します hooks/post-receive では、次のようにします。
#! /bin/sh
GIT_WORK_TREE=/home/user/public_html/ git checkout -f
これは、root として ssh 経由でプッシュすることを除けば、非常にうまく機能します。そのため、チェックアウトされたすべてのファイルは root:root によって所有されます。これにより、許可の問題が発生します。
私が現在使用している解決策は、受信後のファイルに次のような行を追加することです。
chown -R user:user /home/user/public_html/*
public_html のすべてのファイルを user:user に設定するという明らかな問題は別として、これはうまく機能しますが、これは必ずしも必要なものではなく、おそらく少し非効率的です。また、user:user を間違って入力する別の機会が導入されます。
そう:
public_html のすべてのファイルではなく、チェックアウトされているファイルのみを設定する方法はありますか?
そもそも root:root によって所有されているファイルを停止する方法はありますか? 他のユーザーに ssh アクセスを許可したくないので、root として ssh する必要があります。