У меня есть система Ubuntu и установленный на ней Subversion. Теперь я хочу создать на ней несколько репозиториев. Все репозитории должны иметь свои собственные логины.
например---example.com/svn/repo1 : пользователь--1
example.com/svn/repo2 : пользователь--2
example.com/svn/repo3 : пользователь--3
Теперь пользователь user1 не должен иметь доступ к repo2 и repo3. И пользователь user2 не должен иметь доступ к repo1 и repo3.
Я могу создать несколько репозиториев, но не логины. Пожалуйста, помогите мне.
Спасибо
решение1
Использовать dav_svn_module
Вот пример конфигурации, посмотритекнига svnидти глубже
LoadModule dav_svn_module /usr/lib/apache/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache/mod_authz_svn.so
<IfModule dav_svn_module>
<IfModule authz_svn_module>
<Location /svn>
DAV svn
SVNParentPath /svn
AuthzSVNAccessFile /etc/apache2/svn_authz
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/apache2/svn_passwd
</Location>
</IfModule>
</IfModule>
Пример аутентификации:
cat /etc/apache2/dav_svn.authz
[groups]
admin = foo
graph = bar
developers = foo,baz
[/]
* =
@admin = rw
@developers = rw
@graph = r
[/branches/prod/*]
* =
@admin = rw
[ZCS:/]
* =
@admin = rw
@developers = rw
@graph = rw
[SYMFONY_PLUGINS:/]
* =
@admin = rw
@developers = rw
[SYMFONY:/]
* =
@admin = rw
@developers = rw
решение2
Используйте svnserve вместо Apache server. Внутри созданного вами репозитория вы найдете каталог conf. Используя ваш любимый текстовый редактор, отредактируйте следующие файлы, внеся следующие изменения:
В svnserve.conf раскомментируйте следующее: [general]
anon-access = read
(и измените read на none)
auth-access = write
passwd-db = passwd
В файле passwd добавьте имена пользователей и соответствующие им пароли в формате имя пользователя = пароль.
[users]
admin = adminspass
dev1 = devspass
Внесите аналогичные изменения во все ваши репозитории и запустите svnserve с помощью команды:
svnserve -d --foreground -r /root/dir/of/repo
т.е. если вы создали репозитории в /home/svn, как сказано во многих руководствах, команда будет выглядеть так:svnserve -d --foreground -r /home/svn
Доступ к репозиториям можно получить с помощью любого клиента SVN по URL-адресу:
svn://hostname-or-ip/repo-name