При работе надо одним проектом более чем одного разработчика возникает проблема синхронизации результатов их, так сказать, деятельности. Кроме того, даже один человек может параллельно работать над несколькими версиями проекта. Существенно помогает в этом система контроля версии SVN. На FreeBSD необходимо поставить порт subversion.
# cd /usr/ports/devel/subversion && make install clean
Создаем директории web-репозитория, например
# mkdir -p /usr/local/www/apache22/data/svn
# mkdir -p /usr/local/www/apache22/data/svn/repos
В конфигурации виртуального сайта следует написать следующие строки:
<VirtualHost *:80>
ServerAdmin webmaster@local.net
DocumentRoot "/usr/local/www/apache22/data/svn"
ServerName svn.local.net
ErrorLog "/var/log/svn-error.log"
CustomLog "/var/log/svn-access.log" common
<Location / >
DAV svn
SVNListParentPath on
SVNParentPath "/usr/local/www/apache22/data/svn/repos/"
AuthType Basic
AuthName "Private SVN"
AuthUserFile /usr/local/etc/apache22/svn/.htpasswd
Require valid-user
</Location>
</VirtualHost>
Разрешаем DAV и устанавливаем HTTP-авторизацию. Естественно нужно создать файл с паролями:
# cd /usr/local/etc/apache22/svn
# htpasswd -b -c -d .htpasswd svnuser svnpassword
Теперь для каждого проекта создаем одноименную директорию, импортируем в виртуальную директорию trunk файлы из директории проекта, а также создаем ветку проекту соответствующей версии:
# svnadmin create /usr/local/www/apache22/data/svn/repos/myproject
# svn import /usr/home/myuser/projects/myproject file:///usr/local/www/apache22/data/svn/repos/myproject/trunk -m "My first project"
# svn copy --parents file:///usr/local/www/apache22/data/svn/repos/myproject/trunk file:///usr/local/www/apache22/data/svn/repos/myproject/branches/0.0 -m "Project ver 0.0"
В принципе svn-примитив готов, надеюсь смысл понятен.
В заключение приведу несколько полезных команд для работы с файловой системой FreeBSD. Речь пойдет о изменении владельца и прав доступа для большого количества файлов одновременно (естественно имеется в виду сайт или тот же svn-репозиторий).
рекурсивное изменение владельца и группы: # chown -R www:wheel ./mydir
рекурсивное изменение прав доступа к директориям: # find . -type d -exec chmod 775 {} \;
рекурсивное изменение прав доступа к файлам: # find . -type f -exec chmod 664 {} \;
Источник: http://myfreebsd.ru/freebsd_as_server/sozdaem-svn-repozitorij-v-freebsd