1. Настройка Subversion

  1. Создаем группу для работы с SVN :
    groupadd svn
    
  2. Добавляем себя (ваше имя пользователя в Linux) в группу svn:
    usermod -a -G svn asp
    usermod -a -G svn root
    
  3. Добавляем apache (пользователя, от имени которого работает apache, может быть www-data, в группу svn :
    usermod -a -G svn apache
    
  4. Создаем папку для будущего репозитория :
    mkdir /srv/svn/$PROJNAME
    
  5. Создаем репозиторий :
    svnadmin create /srv/svn/$PROJNAME
    
  6. Меняем права к папке для доступа пользователям из группы svn :
    chown -R apache:svn /srv/svn/$PROJNAME
    
  7. Разрешаем на запись группе и владельцу :
    chmod -R g+ws /srv/svn/$PROJNAME
    
  8. Создаем пароль для доступа к папке с репозиторием, который впоследствии будет использоваться apache'ем :
    htpasswd -c -m /etc/apache2/svn.htpasswd имя_пользователя
    htpasswd -c -m /srv/svn/$PROJNAME/.htpasswd asp
    
  9. Теперь создадим правило для 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>
    
  10. SVN установлен! Он доступен по адресу http://site/svn

  1. Настройка Trac

  1. Создаем папку для Trac'а :
    mkdir /srv/trac/$PROJNAME
    
  2. Создаем среду для работы Trac с SVN :
    trac-admin /srv/trac/$PROJNAME initenv
    
  3. Меняем права к папке с trac'ом :
    chown -R apache:svn /srv/trac/$PROJNAME
    chmod -R g+ws /srv/trac/$PROJNAME
    
  4. Создаем пароль для админ-доступа к папке с trac'ом, который впоследствии будет использоваться apache'ем
    htpasswd -c -m /etc/apache2/trac.htpasswd имя_пользователя
    htpasswd -c -m /srv/trac/test/.htpasswd test
    
  5. Создадим правило для 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>
    
  6. Trac установлен! Он доступен по адресу http://site/trac

  1. Установка плагина TracWebAdmin

  1. Чтобы устанавливать плагины для trac'а - нам нужен пакет "python-setuptools" :
    sudo apt-get install python-setuptools
    
  2. Переходим в папку, где лежат trac-плагины :
    cd /usr/share/trac/plugins
    
  3. Будем ставить TracWebAdmin из svn-репозитария :
    sudo svn co http://svn.edgewall.org/repos/trac/sandbox/webadmin/
    
  4. Переходим в папку с webadmin'ом и собираем его установочный egg-файл :
    cd webadmin
    sudo python setup.py bdist_egg
    
  5. Переходим в папку со свежеиспеченным установщиком командой...
    cd /usr/share/trac/plugins/webadmin/dist
    
    ...выводим создержимое папки...
    dir
    
    ... и копируем имя egg-файла.
  6. Устанавливаем TracWebAdmin :
    sudo easy_install-2.5 имя_egg_файла
    
  7. Включаем наш плагин в конфигурацию trac'а :
    #Alt+F2 gksu gedit /etc/trac/trac.ini
    [components]
     webadmin.* = enabled
    
  8. Добавляем себя в админы trac'а :
    trac-admin /srv/trac/ethsen permission add asp_admin TRAC_ADMIN
    
  9. Готово!

  1. Настройки 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

  1. Новый репозиторий

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

  1. По правам

CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON trac.* TO trac@localhost IDENTIFIED BY 'tracPa$$';

  1. Запуск 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