среда, 6 февраля 2013 г.

svn в debian

Ставим версию от WANDisco (репа есть в заметках)
apt-get install subversion

Есть 4 метода запуска:



Демон
Запускаться будет от рута (увы, тут нет врапперов как у FreeBSD), плюс оно как сервис даже не заявлено.
Сервиса изначально также нет, его надо поставить через insserv и потом включить через update-rc.d

svn+ssh
Применимо только к файловому режиму работы, зато чуть проще с безопасностью. Но не так хорошо, как с gitolite, или надо писать обёртки.
"svn+ssh + command=/usr/bin/ssh в authorized_keys + ssh_keys :) + posix acl =

1) нет более безопасного варианта
2) только если не быть полным идиотом и делать ssh ключи без пароля
3) при posix acl — права можно настраивать как угодно
4) если вы нихрена в этом не понимаете — то более сложного варианта все настроить для вас не будет. Но знание сие крайне полезно бывает)
5) можно написать свой входной скрипт (а-ля bzr_access), проверять права уже там, при этом достигается сумасшедшая гибкость — хоть в бд права юзеров смотрите."
http://habrahabr.ru/post/51875/#comment_1377703

mod_dav_svn
Достаточно медленный вариант и ест много памяти, хотя весьма популярный.
"In a synthetic, non-representative benchmark test I performed using Subversion 1.4.5, Subversion 1.1.1 and Apache 2.0, mod_dav_svn's performance was 30% to 400% slower than svnserve's. svnserve's performance was close to local direct accesses to the repository using the svn command line tools."
http://stackoverflow.com/questions/502585/svnserve-vs-moddavsvn

inetd
Да, оно уже устарело, но пока это наиболее простой метод запуска не от рута.

# vi /etc/inetd.conf
и дописываем в конец
svn     stream  tcp     nowait  svn     /usr/bin/svnserve       svnserve -r /var/svn -i
Как вариант, после -r (где будет корень для всех реп) может быть /home/Repositories и другие варианты

Заводим пользователя
# useradd -m -u 900 svn
Тут можно сделать всякие shell=/bin/date...

Ну и перезапустим inetd
# /etc/init.d/openbsd-inetd restart

Теперь надо проверить, что нет ошибок
# tail /var/log/daemon.log
У меня была ошибка
inetd[5784]: svnserve/tcp: unknown service
потому что первым словом - название сервиса, которое должно быть в /etc/services.

Также советую постаавить subversion-tools

* svn-backup-dumps: Incremental dumpfile-based backup script
 * svn-bisect: Bisect revisions to find a regression
 * svn-clean: Remove unversioned files from a working copy
 * svn-fast-backup: rsync-based backup script for FSFS repositories
 * svn-hot-backup: Backup script, primarily for BDB repositories
 * svn_apply_autoprops: Apply property settings from
   .subversion/config file to an existing repository
 * svn_load_dirs: Sophisticated replacement for 'svn import'
 * svnwrap: Set umask to 002 before calling svn or svnserve
 * several example hook scripts: commit-access-control, commit-email,
   log-police, mailer, svnperms, verify-po
Возможно, будет еще дополнено.

Комментариев нет:

Отправить комментарий