権限の構成

権限の構成

私はSSH経由で友達とgitリポジトリを共有しています。彼は自分のコンピュータのSSHサーバー(共有Gitリポジトリがある場所)を使用して自分のGitリポジトリからプッシュしてインポートします。

問題は、彼がコミットをプッシュすると、コミットがjanito users rwx------(権限のあるメタデータであるため)私がプルできないことです。

gitというグループを作成し、彼と私自身を追加し、リポジトリはです。権限を気にせずに常にプルしてプッシュできるように、リポジトリjpmelos git rwxrwx---ディレクトリに作成されたファイルを強制的に適用するにはどうすればよいですか?<creator> git rwxrwx---

もちろん、あるいは問題に対するより良い解決策を思い出すこともできます。制限は、自分のコンピュータでSSHを使用する必要があることです(まだコードを公開する準備ができていません)。作業リポジトリとは別に作成したベアリポジトリですでにプッシュとプールを実行しています。

ありがとうございます!

ベストアンサー1

umaskの問題はGit構成変数で解決できますcore.sharedRepository

( cd /path/to/shared-repository.git &&
git config --bool core.sharedRepository true
)

Gitは、新しいファイルまたはディレクトリを作成するたびにグループビットが正しく設定されていることを確認します(呼び出し側のユーザーのumaskが「広すぎる」場合でも、常にグループ読み取り可能、グループ書き込み可能、​​適切な場合は実行可能)。
注:このcore.sharedRepository設定はGit自体で作成されたアイテムにのみ適用されるため、デフォルト以外のリポジトリの作業ツリーにあるアイテムの権限を設定するのには役立ちません。これを行うには、umaskを手動で設定する必要があります。

gitグループが所有する新しいファイルとディレクトリを設定できます。ディレクトリの setgid ビットchgrp適切なグループにファイルとディレクトリを追加した後)

chgrp -R git /path/to/shared-repository.git &&
find /path/to/shared-repository.git -type d -exec chmod g=rwxs '{}' \;

最初から新しいリポジトリを作成する場合は、空のchgrpディレクトリを作成してgit init --shared実行します(GitはGIT_DIRでタスクを設定して実行しますcore.sharedRepository)。chmod g=rwxs

mkdir new-shared.git &&
chgrp git new-shared.git &&
git init --bare --shared new-shared.git

おすすめ記事