En fusionnant les réponses @David Underhill et @kixorz , j'ai créé ma propre solution (définitive).
C'est pour les dépôts nus et les dépôts non nus . Il n'y a que peu de différences entre eux, mais de cette manière, c'est plus clair.
REPOSITAIRE NU
cd <repo.git>/ # Enter inside the git repo
git config core.sharedRepository group # Update the git's config
chgrp -R <group-name> . # Change files and directories' group
chmod -R g+w . # Change permissions
chmod g-w objects/pack/* # Git pack files should be immutable
find -type d -exec chmod g+s {} + # New files get directory's group id
où:
<repo.git>
est le répertoire du référentiel nu, généralement sur le serveur (par exemple my_project.git/
).
<group-name>
est le nom du groupe pour les utilisateurs git (par exemple, les utilisateurs ).
REPOSITORY NON NU
cd <project_dir>/ # Enter inside the project directory
git config core.sharedRepository group # Update the git's config
chgrp -R <group-name> . # Change files and directories' group
chmod -R g+w . # Change permissions
chmod g-w .git/objects/pack/* # Git pack files should be immutable
find -type d -exec chmod g+s {} + # New files get directory's group id
où:
<project_dir>
est le répertoire du projet contenant le .git
dossier.
<group-name>
est le nom du groupe pour les utilisateurs git (par exemple, les utilisateurs ).