Проблемы с правами доступа к файлам с общим доступом к удаленному репозиторию GIT

У меня есть репозиторий GIT, которым я управляю для своего офиса. Из-за политики компании мы не можем использовать внешних хостинг-провайдеров, таких как GitHub и им подобных. Итак, мне осталось делать то, что я могу, с нашей локальной сетью.

Каждый управляет своими собственными локальными репозиториями, но у нас также есть удаленный репозиторий, который наши пользователи отправляют (и доступны для таких приложений, как Hudson и Fisheye), аналогичные как центральное репо будет работать при подрывной деятельности. У каждого пользователя настроены открытые ключи, поэтому они могут выполнять аутентификацию без пароля в системе, в которой размещен наш удаленный репозиторий.

Для нашего удаленного репозитория я настроил их для совместного использования в «групповом» режиме:

git config core.sharedRepository group

Все наши пользователи также являются членами группы git, но это не основная группа для многих пользователей. Кажется, что когда git создает или обновляет какие-либо объекты при "push", он использует основную группу пользователя. Вместо этого мне нужно использовать общую группу «git», членом которой является каждый пользователь. Я видел документацию в Интернете, в которой ранее обсуждалась установка липкого бита, но она, похоже, различалась в зависимости от источника и на самом деле не решала проблему создания общей группы (если я просто делаю файлы с возможностью произвольной записи, С таким же успехом я мог бы сделать их 777).


Обновление:

Используя ответ Мэтью Флашена ниже

chgrp -R git repo.git 
find repo.git -type d -exec chmod g+rws {} +

, я смог создать репозиторий, который каждый мог бы использовать вместе. Я также рассмотрю gitolite, но мои потребности довольно простые, и наша среда позволяет автоматически настраивать пользователя и ключи, так что это ' использование не является ключевым. Тем не менее, я хочу убедиться, что имею дело с этим правильно.

Моя структура репозитория включает каталог верхнего уровня (удаленные репозитории) и подкаталоги для каждого из моих репозиториев (app-1.git, app- 2.git, библиотека-1.git и т. Д.). Я должен иметь возможность применить chmod g + rws {} + к каталогу верхнего уровня (удаленные репозитории) вместо каждого отдельного репо, верно? Команда find

find /opt/remote-repos -type d -exec ...

находит все каталоги в расположении / opt / remote-repos и выполняет в них команду. Команда (chmod g + rws) гарантирует, что группа может читать и записывать эти файлы, а также устанавливает фиксированную ставку, чтобы указанная группа всегда использовалась при выполнении. (Я понятия не имею об использовании части {} +, я предполагаю, что это связано с параметром find exec).

В любом случае, просто хочу подтвердить, что я правильно понимаю это решение.

Дополнительные ссылки:

13
задан Community 23 May 2017 в 10:31
поделиться