Слияние @ David Underhill и @ kixorz ответов, я сделал свое собственное (окончательное) решение.
Это для голых репозиториеви non-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
где:
<repo.git>
- это пустой каталог репозитория, обычно на сервере (например, my_project.git/
). <group-name>
- это имя группы для пользователей git (например, users ).
НЕЗЕМНОЕ ХРАНИЛИЩЕ
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
где:
<project_dir>
- каталог проекта, содержащий .git
папка. <group-name>
- это имя группы для пользователей git (например, users ).