среда, 26 августа 2009 г.

SVN up

В связи с тем что мой сервер используется в качестве сервера для разработки, и к одному и тому же коду поидее должны иметь доступ несколько разработчиков одновременно, решено было поднять на сервере SVN.

Создадим в папке home подпапку svn. Внутри этой основной папки лежат папки непосредственно с сайтами, каждую такую папку мы в SVN сделаем отдельным проектом таким образом, что бы можно было разным девелоперам давать доступ на соответствующую папку без возможности доступа к другим проектам.

Итак у меня уже установлен вебсервер поэтому осталось только установить и настроить SVN и прописать для него виртуал хост.

Сначала ставим Subversion:

sudo apt-get install subversion

и для поддержки доступа к SVN по http протоколу устанавливаем libapache2-svn

sudo apt-get install libapache2-svn

Дальше создаем виртуальный хост для SVN

$ nano /etc/apache2/sites-enabled/svn.conf

с такими параметрами:
<VirtualHost *:80>
    ServerAdmin admin@mysite.com
    ServerName svn.mysite.com

    ErrorLog /var/log/apache2/svn.mysite.com-error.log
    CustomLog /var/log/apache2/svn.mysite.com-access.log combined

<Location />
    # говорит апачу какой модуль использовать для обработки информации.
    DAV svn
    # разрешить просматривать корневой каталог (не работает при включении
    # анонимного доступа)
    SVNListParentPath on
    # корень SVN сервера, где будут храниться репозитории.
    SVNParentPath /home/svn
    # тип авторизации. basic - использовать авторизацию по htpasswd
    AuthType Basic
    # сообщение в окне авторизации :)
    AuthName "My SVN Server"
    # фаил содержащий пароли для авторизации.
    AuthUserFile /home/svn/svn-passwd
    # фаил с настройками прав доступа к репозиторию.
    AuthzSVNAccessFile /home/svn/svn-access
    # Доступ на чтение/запись только после авторизации
     Require valid-user
  </Location>


</VirtualHost>


Создаём репозиторий.Первым проектом будет папка dev. Потом все файлы импортнем в SVN.

$ sudo svnadmin create /home/svn/dev

И меняем овнера (apache user) и права на папку:

$ sudo chown -R www-data:www-data /home/svn/dev
$ sudo chmod -R g+rws
/home/svn/dev

Последняя команда для того что бы все новые файлы которые создаются в репозитории создавались с правильными правами.

Теперь создаём фаил-базу с паролями для нашего репозитория.
$ htpasswd -cm /home/svn/svn-passwd admin

Здесь:
htpasswd - утилита Apache`a, для генерации нужных нам паролей.
-cm - ключи
ключ c - создать новый фаил, если уже есть - перезаписать.
ключ m - использовать md5.
admin - имя пользователя, для которого будет добавлена запись.

Для добавления новых пользователей используйте команду:

$ htpasswd -m /home/svn/svn-passwd user-name

Создаём фаил с привелегиями пользователей для репозитория.

$ nano /home/svn/svn-access

# блок, содержащий группы.
[groups]
# группа для менеджеров
managers = admin, vadim
# группа разработчиков magento в подпапке dev/magento
magento = developer

# корень нашего SVN сервера
[/]
# запрещаем доступ для анонимов
* =
# директория проекта dev
[dev:/]
# запрет для всех пользователей.
* =
# группе managers глобально разрешено чтение\запись
@managers = rw
# директория magento в репозитероии dev
[dev:/magento]
# группе magento разрешено чтение\запись.
@magento = rw

Теперь проверяем что у нас получилось:

заходим броузером на http://svn.domain.com/dev

Если мы видим
dev - Revision 0: /
Powered by Subversion version 1.5.1 (r32289).

то все ок :)

Теперь осталось перенести проект в SVN:

Для начала создадим 3 папки в каталоге проекта в SVN:

trunk — основная линия разработки. Здесь будет актуальный на данный момент код, здесь будут выполняться мелкие задачи и правки багов.
branches — ветка для разработчиков. гсуто ветвится другими ветками. Именно в ней вы будете создавать свои ветки.
tags — ветка тэгов. Тут создаются всякие метки, отмечающие значимые вехи развития проектов, проще говоря его стабильные и не очень версии. Нужна она для того, что бы всегда можно было вернуться до какой нибудь версии, например что бы посмотреть «почему эта хрень раньше работала а потом перестала, сцуко»

И импортируем наш проект в папку trunk

svn import . file:///path/to/project/trunk -m "Initial Import"

Документы для прочтения:
https://help.ubuntu.com/community/Subversion
http://www.lissyara.su/?id=1669

http://www.developers-life.com/svn-%D0%BD%D0%B0-ubuntu-mini-howto.html
http://svnbook.red-bean.com/nightly/ru/svn-book.html
http://habrahabr.ru/blogs/development_tools/45203/

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

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