Устанавливаем в FreeBSD:
pkg_add -r subversion


Создаем пользователя svn с группой svn и nologin в качестве оболочки, затем создаем каталог, где будут лежать все репозитории:
adduser
# ...
mkdir /home/svn/repos
chown -R svn:svn /home/svn


Прописываем в /etc/rc.conf:
svnserve_enable="YES"


Запускаем svnserve:
/usr/local/etc/rc.d/svnserve start


subversion настроен и запущен.
Теперь нужно создать первый репозиторий:
svnadmin create /home/svn/repos/test
cd /home/svn/repos/test/conf
vim svnserve.conf


В svnserve.conf пишем следующее:
[general]
# анонимные пользователи не имеют доступа к репозиторию
# если хотим раздавать исходники всем подряд, меняем на read
anon-access = none
# зайдя по логину-паролю, получаем права на чтение и запись
auth-access = write
# логины и пароли хранятся в файле ./passwd
password-db = passwd
# название репозитория
realm = Test project
Также требуется создать в каталоге conf файл passwd:
[users]
eax = parol

Выполняем:
chown -R svn:svn /home/svn

Теперь проверяем все это дело — на этой же машине или на другой:
svn co svn://example.ru/test
cd test

Создаем файл test.pl, пишем в него что-нибудь, затем заливаем в хранилище:
svn add test.pl
svn ci


При сохранении кода в репозиторий, обязательно нужно ввести какой-нибудь commit message. Мне это кажется не очень удобным. Надеюсь, что в будущих версиях плагина такое поведение исправят.


Под Windows есть множество других средств для работы с Subversion, среди которых я бы отметил TortoiseSVN и RapidSVN.
TortoiseSVN встраивается в контекстное меню explorer.exe.
RapidSVN менее удобен, зато является кроссплатформенным (написан на C++ с использованием wxWidgets) и имеет portable версию. Если вы работаете в системе без прав администратора, то не сможете поставить TortoiseSVN.


svnserve не умеет шифровать трафик. Если вы трудитесь над open source проектом или работаете в интранете (возможно, через VPN), то это и не представляет большой проблемы. Для аутентификации svnserve использует CRAM-MD5, так что пароли перехватить не удастся. Кроме того, вы можете ограничить доступ к репозиторию с помощью фаервола (порт 3690), что обеспечит неплохой уровень безопасности.

Правда, все еще остается возможной атака с помощью IP/DNS спуфинга.

Если же шифрование трафика необходимо, subversion предлагает два возможных решения — использовать Apache + mod_dav_svn + SSL или связку SVN + SSH.


Ночные сборки обладают массой полезных свойств и реализуются довольно просто. Вот пример скрипта, который делает check-out проекта, прогоняет тесты и, в случае обнаружения ошибок, высылает отчет на заданный e-mail:

#!/usr/bin/perl

# mojo-test.pl script v 0.1
use strict;

## config ##
my $svn_user = 'eax';
my $svn_host = 'example.ru';
my $project_name = 'new_project';
my $project_path = ' mnt/projects';
my $report_email = 'mail@example.ru';
#############

# делаем check-out проекта (не забыть про identity file!)
my $cmd = "svn co svn+ssh://$svn_user@".
"$svn_host/$project_path/$project_name/ ./project";
`$cmd`;
if($?) {
$cmd = "echo '' | ".
"mail -s 'Failed to check-out $project_name! Error: $?'".
" $report_email";
`$cmd`;
exit 1;
}

# прогоняем тесты
`perl ./project/script/$project_name test > ./t.txt`;
if($?) {
`cat t.txt | mail -s 'Test of $project_name' $report_email`;
}

# подчищаем за собой
`rm -rf ./project/ && rm ./t.txt`;
















Комментарии и вопросы

Опубликовать комментарий или вопрос

Copyright 2019 © ELTASK.COM
All rights reserved.