Я хочу разместить несколько git-репозиториев.
Можно ли настроить их как SVN-Repos с центральным ACL-файлом? (Взгляните, например, на AuthzSVNAccessFile-Directive)
Спасибо филипп
Я решил это в нашей среде с помощью Gitolite, Gitweb и LDAP. Gitolite чрезвычайно мощный и поддерживает ACL и авторизацию даже лучше, чем Subversion (например, Subversion не знает, как взаимодействовать с каталогом LDAP). Предлагаю вам почитать Gitolite Вот. Поскольку вы отметили свой вопрос apache2
вы, вероятно, захотите попробовать использовать HTTP-бэкэнд для Git и Gitolite, для которого вы можете найти полное руководство по установке Вот (для Gitolite g2).
Краткое изложение нашей настройки: каталог LDAP содержит группы (posixGroup
в нашем случае), названные в соответствии с репозиториями Git, определенными в Gitolite; доступ к репозиториям основан на этих группах. Gitolite использует простой скрипт Perl или Bash (см. Вот например, сценарии), чтобы запросить каталог членства пользователя в группе и, таким образом, решить, может ли и как пользователь получить доступ к данному репозиторию. Это требует настройка "большой конфиг" (Gitolite g2) и Поддержка LDAP, но вы можете так же легко определять свои списки ACL статически, без LDAP.
Gitweb - это просто вишенка на торте, но если вы его используете, вы, вероятно, хотите, чтобы ваши пользователи видели только те репозитории, для которых у них есть разрешения. Gitweb позволяет это сделать, выполняя авторизацию для каждого репо на основе определенных списков контроля доступа Gitolite. Видеть Вот для подробностей.
Как видите, довольно много частей взаимодействуют друг с другом, поэтому обязательно внимательно прочтите (и поймите) документацию Gitolite, она довольно обширна.
Изменить: в результате выпуска Gitolite g3 и реструктуризации документации Gitolite Ситарамом Чамарти многие ссылки были нарушены с момента публикации этого сообщения. Я обновил их, как мог, но некоторые до сих пор указывают на документацию по Gitolite g2. Это потому, что некоторые концепции сильно изменились с g2 на g3 (например, «большая установка» или).