La fusión de @David Underhill y @kixorz respuestas, hice mi propia solución (definitiva).
es para descubierto repos y no descubierto repos. Solo hay pequeñas diferencias entre ellos, pero de esta manera es más claro.
GUARDAMUEBLES BARE
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
donde:
<repo.git>
es el directorio de repositorio desnudo, típicamente en el servidor (por ejemplo my_project.git/
).
<group-name>
es el nombre del grupo para usuarios de git (por ejemplo, usuarios).
repositorio non-Bare
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
donde:
<project_dir>
es el directorio de proyecto que contiene la carpeta .git
.
<group-name>
es el nombre del grupo para usuarios de git (por ejemplo, usuarios).
Hay ** [una excelente respuesta a esta pregunta] (http://serverfault.com/questions/26954/how -do-i-share-a-git-repository-with-multiple-users-on-a-machine) ** en ServerFault (otro sitio de StackOverflow). – Zearin