- N проектов - каждый представляет из себя проект Trac и, возможно, настроенный для использования с ним репозитарий Git или Subversion
- M пользователей - каждый имеет полный доступ к некоторым проектам (т.е. может работать в Trac и коммитить в репозитарий), а к некоторым не имеет вовсе.
Проблема заключается в выборе технологии авторизации и аутентификации, которые позволили бы реализовать описанную схему. Для standalone версий Trac, Git и Subversion ведение единой базы данных пользователей и прав доступа к проектам невозможно, поэтому придется задействовать Apache и его средства управления доступом - соответственно репозитарии Git и Subversion будут доступны по протоколу WebDAV. При этом никто не мешает при необходимости использовать более гибкие настройки прав доступа внутри проектов средствами самих Trac и Subversion.
Готовое решение доступно в виде основного пакета appliance-trac и дополнительных appliance-trac-scm-git и appliance-trac-scm-svn, собираемых из одноименного репозитария. Устанавливаем требуемое штатным для ALT Linux образом:
trac-scm-gitСоздаем проект (указываем имя и тип репозитария - если последним параметром будет что-то отличное от git или svn, то репозитарий просто не будет создан):
# appliance-trac-create alpha gitСредствами Apache создаем пользователя:
# htpasswd2 -b /var/www/appliance-trac/passwd user userpwdВключаем его в соответствующую группу Apache, имя которой соответствует имени проекта:
# vim /var/www/appliance-trac/groupПри необходимости пользователя можно сделать администратором Trac:
# trac-admin /var/www/appliance-trac/env/alpha permission add user TRAC_ADMINТеперь пользователь user может работать с проектом через web-интерфейс по ссылке http://server//appliance-trac/env/alpha и напрямую с репозитарием:
$ cat > ~/.netrc << EOF > machine server > login user > password userpwd > EOF $ git-clone http://server/appliance-trac/scm/git/alpha.git $ cd alpha/ $ echo "new line" >> README $ git commit -a -m 'new commit' $ git-http-push http://server/appliance-trac/scm/git/alpha.git heads/masterПосле того, как проект стал ненужным, его можно удалить:
# appliance-trac-drop alpha git
2 комментария:
Помоему проще пользоваться сторонними услугами и так не париться. Например MySvn.ru
Вы всегда готовы отдать контроль над своими проектами неизвестно кому? ;)
Отправить комментарий