4

サーバー上の仮想ホストにプルされる開発、テスト、およびステージングブランチを持つgitリポジトリがあります。ユーザー アカウントを使用してサーバー上で git pull できる必要がありますが、プルされるファイルは www-data ユーザー (およびグループ) が所有する必要があります。私がsvnを使用したとき、ユーザーとしてsvnに対して認証されますが、正しいファイル所有権を維持する --username --password オプションを使用して、www-dataおよびsvn updateとしてsudoすることができました。git でこれを行う方法はありますか (実際には認証にパスワードではなく ssh キーを使用しています)。

4

1 に答える 1

6

プルしているリポジトリでこのオプションを設定したい (からの抜粋git help config):

  core.sharedRepository
       When group (or true), the repository is made shareable between several
       users in a group (making sure all the files and objects are
       group-writable). When all (or world or everybody), the repository will
       be readable by all users, additionally to being group-shareable. When
       umask (or false), git will use permissions reported by umask(2). When
       0xxx, where 0xxx is an octal number, files in the repository will have
       this mode value.  0xxx will override user’s umask value (whereas the
       other options will only override requested parts of the user’s umask
       value). Examples: 0660 will make the repo read/write-able for the
       owner and group, but inaccessible to others (equivalent to group
       unless umask is e.g.  0022).  0640 is a repository that is
       group-readable but not group-writable. See git-init(1). False by
       default.

このオプションを設定cdするには、適切なグループ/モードが必要な作業ツリーまたはリポジトリ (プル元のリポジトリではありません) に設定し、git config core.sharedRepository group. リポジトリ内のファイルのモードを設定するだけでなく、それらがすべてリポジトリのルートを所有するグループによって所有されていることも確認します。このオプションは、リポジトリでローカルに作業している場合でも、別のリポジトリから (たとえばgit://プロトコル経由で) プッシュしている場合でも有効です。

このオプションを設定せずに間違った所有者やモードでリポジトリにファイルを作成してしまった場合は、最初cdにリポジトリに入って実行chmod -R g+rw .chgrp -R www-data .、整合性のある状態にする必要があります。

于 2013-04-25T13:23:54.877 に答える