25

リポジトリから変更をプルすると、Gitはファイルのアクセス許可を変更します(実際には、彼はグループのwriteアクセス許可を変更します)。

私が正しければ、Gitは実行可能ビットのみを追跡する必要があります。これはとにかくcore.filemodefalseに設定することで削除できます。

ただし、ファイルモードは(ローカル、グローバル、およびユーザーで)falseに設定されていますが、プルすると、writeアクセス許可は常に変更されます。

正しいchmodをリセットするためにgit-hooksを使用することもできますが、これはオーバーヘッドであり、ファイルモードの変更を完全に無視するようにgitに要求する方法がある場合は望ましいです。

誰もがこれを達成する方法を知っていますか?

4

2 に答える 2

18

ここで役立つ可能性のある構成設定の1つはブログcore.sharedRepository投稿「コラボレーションリポジトリ内のGitオブジェクトでのグループ書き込みの保持」に示されています。

解決策はかなり簡単であることが判明しました。
ファイル.git/configに、次のような行を追加しました: " sharedRepository = group"、次のように:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sharedRepository = group

.git/objectsその後、グループ書き込み用の適切な権限で新しいファイルが作成されました。
(ただし、新しいファイルは、プッシュを受信したユーザーアカウントのプライマリグループによってグループ所有されていることに注意してください。プロジェクトで共同作業しているユーザーのプライマリグループが異なり、それらのユーザーがそのセットのメンバーシップを共有していない場合グループでも、問題が発生する可能性があります。)

あなたの価値umaskを確認してください:

例:0660所有者とグループのリポジトリを読み取り/書き込み可能にしますが、他のユーザーはアクセスできません(umaskたとえば、そうでない場合はグループと同等です0022)。

于 2012-10-04T20:24:10.000 に答える
9

私が使用する解決策は、保持したい権限を持つユーザーとしてコマンドを実行することです。

sudo -u user command

この場合、次のようになります。

sudo -u www-data git pull

www-data 少なくともUbuntuのapacheデフォルトユーザーであること

これにより、権限が変更されなくなります。ファイルのアクセス許可をWebサーバーユーザーに設定したまま、VPSのgitリポジトリを更新するときに使用します。

于 2016-06-15T00:42:38.760 に答える