- Настройка Subversion
- Создаем группу для работы с SVN :
groupadd svn
- Добавляем себя (ваше имя пользователя в Linux) в группу svn:
usermod -a -G svn asp
usermod -a -G svn root
- Добавляем apache (пользователя, от имени которого работает apache, может быть www-data, в группу svn :
usermod -a -G svn apache
- Создаем папку для будущего репозитория :
mkdir /srv/svn/$PROJNAME
- Создаем репозиторий :
svnadmin create /srv/svn/$PROJNAME
- Меняем права к папке для доступа пользователям из группы svn :
chown -R apache:svn /srv/svn/$PROJNAME
- Разрешаем на запись группе и владельцу :
chmod -R g+ws /srv/svn/$PROJNAME
- Создаем пароль для доступа к папке с репозиторием, который впоследствии будет использоваться apache'ем :
htpasswd -c -m /etc/apache2/svn.htpasswd имя_пользователя
htpasswd -c -m /srv/svn/$PROJNAME/.htpasswd asp
- Теперь создадим правило для Apache для доступа к svn-репозиторию :
#Alt+F2 gksu gedit /etc/apache2/conf.d/svn
<Location "/svn">
DAV svn
SVNPath /var/svn
AuthType Basic
AuthName "SVN Repo"
AuthUserFile /etc/apache2/svn.htpasswd
Require valid-user
</Location>
- SVN установлен! Он доступен по адресу http://site/svn
- Настройка Trac
- Создаем папку для Trac'а :
mkdir /srv/trac/$PROJNAME
- Создаем среду для работы Trac с SVN :
trac-admin /srv/trac/$PROJNAME initenv
- Меняем права к папке с trac'ом :
chown -R apache:svn /srv/trac/$PROJNAME
chmod -R g+ws /srv/trac/$PROJNAME
- Создаем пароль для админ-доступа к папке с trac'ом, который впоследствии будет использоваться apache'ем
htpasswd -c -m /etc/apache2/trac.htpasswd имя_пользователя
htpasswd -c -m /srv/trac/test/.htpasswd test
- Создадим правило для Apache для доступа к trac'у :
#Alt+F2 gksu gedit /etc/apache2/conf.d/trac
<LocationMatch "/trac/login">
AuthType Basic
AuthName "Projects"
AuthUserFile /etc/apache2/trac.htpasswd
Require valid-user
</LocationMatch>
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac
PythonOption TracUriRoot /trac
</Location>
- Trac установлен! Он доступен по адресу http://site/trac
- Установка плагина TracWebAdmin
- Чтобы устанавливать плагины для trac'а - нам нужен пакет "python-setuptools" :
sudo apt-get install python-setuptools
- Переходим в папку, где лежат trac-плагины :
cd /usr/share/trac/plugins
- Будем ставить TracWebAdmin из svn-репозитария :
sudo svn co http://svn.edgewall.org/repos/trac/sandbox/webadmin/
- Переходим в папку с webadmin'ом и собираем его установочный egg-файл :
cd webadmin
sudo python setup.py bdist_egg
- Переходим в папку со свежеиспеченным установщиком командой...
cd /usr/share/trac/plugins/webadmin/dist
...выводим создержимое папки...
dir
... и копируем имя egg-файла.
- Устанавливаем TracWebAdmin :
sudo easy_install-2.5 имя_egg_файла
- Включаем наш плагин в конфигурацию trac'а :
#Alt+F2 gksu gedit /etc/trac/trac.ini
[components]
webadmin.* = enabled
- Добавляем себя в админы trac'а :
trac-admin /srv/trac/ethsen permission add asp_admin TRAC_ADMIN
- Готово!
- Настройки trac.ini
[account-manager]
htpasswd_hash_type = crypt|md5|sha
password_file = /srv/svn/test/.htpasswd
password_store = HtPasswdStore
[trac]
default_charset = utf-8
repository_dir = /srv/svn/test
repository_sync_per_request =.
[screenshots]
default_components = none
default_description = $description
default_filter_relation = or
default_format = html
default_list_item = $id - $name - $description
default_order_directions = asc
default_orders = id
default_versions = none
ext = jpg,png
formats = raw,html,jpg,png
mainnav_title = Screenshots
metanav_title =
path = /srv/trac/test/screenshots
[screenshots-matrix]
columns = 3
height = 120
rows = 3
width = 160
[components]
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.notification.accountchangelistener = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.web_ui.registrationmodule = enabled
trac.web.auth.loginmodule = disabled
tracopt.versioncontrol.svn.* = enabled
tracscreenshots.api.screenshotsapi = enabled
tracscreenshots.core.screenshotscore = enabled
tracscreenshots.init.screenshotsinit = enabled
tracscreenshots.matrix_view.screenshotsmatrixview = enabled
tracscreenshots.timeline.screenshotstimeline = enabled
tracscreenshots.wiki.screenshotswiki = enabled
webadmin.* = enabled
tracopt.ticket.commit_updater.committicketreferencemacro = enabled
tracopt.ticket.commit_updater.committicketupdater = enabled
- Новый репозиторий
svnadmin create /srv/svn/test
htpasswd -cm /srv/svn/svn-passwd asp_admin
htpasswd -m /srv/svn/svn-passwd asp
далее необходимо создать фаил с привелегиями пользователей для репозитория.
vi /srv/svn/svn-access
в нем:
блок, содержащий группы.
[groups]
# группа devel и перечень пользователей в неё входящих.
devel = asp, asp_admin
# группа занимающаяся переводами.
#trans = Jarek
# корень нашего SVN сервера
[/]
# доступ для анонимов на чтение.
* = r
# директория проекта myproject
[test:/]
# группе devel глобально разрешено чтение\запись
@devel = rw
# директория translate в репозитероии myproject
#[myproject:/translate]
# группе trans разрешено чтение\запись.
#@trans = rw
# директория разработчиков.
[test:/devel]
# запрет для всех пользователей.
* =
# разрешён доступ на чтение\запись только группе девелоперов.
@devel = rw
trac-admin /srv/trac/test initenv
#!!! Комментариями указаны опции, которые необходимо указывать !!!
# указываем имя проекта. ex.: My SVN Project
Project Name [My Project]>
# mysql://trac:ваш_пароль@localhost/trac
Database connection string [sqlite:db/trac.db]>
# оставить как есть, т.е. просто тыкаем enter :)
Repository type [svn]>
# путь до корня репозитория. ex.: /usr/local/www/apache22/svn/myproject
Path to repository [/path/to/repos]>
Добавляем нашего админа:
trac-admin /srv/trac/test permission add asp_admin TRAC_ADMIN
Синхронизируемся с хранилищем
8не смог разобраться с этой командой, поэтому, делим на два этапа
сначала делаем trac-admin путь к траку
, а в нем уже делаем repository resync *
А вообще должно было бы работать
trac-admin /srv/trac/test repository resync *
После того, как репозиторий будет создан, можно отредактировать его фаил конфигов.
vi /srv/trac/test/conf/trac.ini
Также удобно сделать хуки на trac-post-commit-hook
Можно настроить svn таким образом, чтобы после комита автоматически выполняллось некоторое действие. Существует вот такой скрипт: /usr/src/Trac-0.12.1/contrib/trac-svn-hook он смотрит, что есть в комментарии к комиту, вычленяет оттуда команду и либо пишет коммент к тикету, либо пишет коммент и закрывает тикет. Подробно можно прочитать в нем же. Т.е. использование этого скрипта, немного упрощает работу. Как использовать
Вот такая комманада:
$ svn ci -m "re #123 - тестирование тикета"
В тикет #123 пишет:
(In [334]) re #123 - тестирование тикета
Т.е. формат коммента для svn следующий:
Комманда #N
Команды есть следующие:
references, refs, addresses, re, see
любая из этих комманд записывает ссылку на коммит и svn комментарий в тикет
close, closed, closes, fix, fixed, fixes
то же самое + еще и закрывает тикет
Advanced команды можно узнать в докуменации к скрипту
В скрипте достаточно прописать:
REPOS="$1"
REV="$2"
export TRAC_ENV="/srv/trac/test"
/usr/src/Trac-0.12.1/contrib/trac-svn-hook \
$REPOS $REV
главное потом еще не забыть сделать
chmod +x /srv/svn/test/hooks/post-commit
- По правам
CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON trac.* TO trac@localhost IDENTIFIED BY 'tracPa$$';
- Запуск tracd
Запуск демона tracd (пример)
tracd \
--basic-auth="ethsen,/srv/svn/ethsen/.htpasswd,Ethernet Sensor" \
--basic-auth="test,/srv/svn/test/.htpasswd,Test" \
--basic-auth="timer.db,/srv/svn/timer/.htpasswd,Timer" \
-p 8888 \
-b gretis.ru \
-e /srv/trac