Linux環境のGitプールはファイルの所有者を変更します。

Linux環境のGitプールはファイルの所有者を変更します。

git pullライブサーバーで実行するたびにファイル所有者が変更されるのはなぜですか?私はそれを手動で続けますchown john:john index.php

git pullファイル所有者が自動的にまたは維持されるようにするには、何を変更する必要がありますかjohn

答え1

git pull(と同じ)を使用すると、git fetch; git mergegitは新しいファイルを作成し、古い所有権を気にしません(gitはその情報を保存しません)。

この問題を解決するためのさまざまなソリューションがあります。より簡単なアプローチは、マージ/インポート後に自動的に呼び出すpost-updateフック(ディレクトリに.git/hooks)を追加することです(chown john:john . -R例については、SOソリューションを参照してください。)。

代替ソリューションは次のとおりです。

  • git pullrootの代わりにユーザーjohnとして実行します。 (これを行うには、.gitディレクトリへのjohn書き込み権限が必要です。)
  • johnをユーザーとして使用する展開用のフックを作成するか、更新後にchownを実行します(したがって、git pullベアストアのフック内で実行する必要があります)。post-receive

Linuxではこれが別の解決策になる可能性がありますsetuid/setgid

関連情報