git pull
ライブサーバーで実行するたびにファイル所有者が変更されるのはなぜですか?私はそれを手動で続けますchown john:john index.php
。
git pull
ファイル所有者が自動的にまたは維持されるようにするには、何を変更する必要がありますかjohn
?
答え1
git pull
(と同じ)を使用すると、git fetch; git merge
gitは新しいファイルを作成し、古い所有権を気にしません(gitはその情報を保存しません)。
この問題を解決するためのさまざまなソリューションがあります。より簡単なアプローチは、マージ/インポート後に自動的に呼び出すpost-update
フック(ディレクトリに.git/hooks
)を追加することです(chown john:john . -R
例については、SOソリューションを参照してください。)。
代替ソリューションは次のとおりです。
git pull
rootの代わりにユーザーjohnとして実行します。 (これを行うには、.gitディレクトリへのjohn書き込み権限が必要です。)- johnをユーザーとして使用する展開用のフックを作成するか、更新後にchownを実行します(したがって、
git pull
ベアストアのフック内で実行する必要があります)。post-receive
Linuxではこれが別の解決策になる可能性がありますsetuid
/setgid