При работе надо одним проектом более чем одного разработчика возникает проблема синхронизации результатов их, так сказать, деятельности.  Кроме того, даже один человек может параллельно работать над несколькими версиями проекта.  Существенно помогает в этом система контроля версии SVN. На FreeBSD необходимо поставить порт subversion.

# /usr/ports/devel/subversion && make install clean

Создаем директории web-репозитория, например

# -p /usr/local/www/apache22/data/svn
# -p /usr/local/www/apache22/data/svn/repos

В конфигурации виртуального сайта следует написать следующие строки:

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

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

Разрешаем DAV и устанавливаем HTTP-авторизацию. Естественно нужно создать файл с паролями:

# /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 --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 {} \;