вторник, 23 марта 2010 г.

Настройка SVN сервера

По долгу своей професии мне часто приходится настраивать svn сервер для розработчиков сайтов. Потому как это очень удобная штука).Здесь я опишу простую установку для того что бы буквально за пару минут иметь вполне работающий сервер svn.
ПОЕХАЛИ
Установка пакета

sudo apt-get install subversion

Создание директории для svn репозиторий в котором будут хранится настройки. Я создам в домашней директории:

sudo mkdir /home/svn

Создание тестового репозитория testrepo командой svnadmin create:

svnadmin create /home/svn/testrepo

При использовании svn протокола, используется собственный сервер svnserve поэтому нужно настроить права доступа к svn репозиторию: в моём случае ето testrepo отредактируем файл:

sudo nano /home/svn/testrepo/conf/svnserve.conf

В минимальном варианте настроек

### Права для не авторизованных пользователей
anon-access = none  // запрещаем доступ на чтение и запись не авторизированым пользователям
### Права для авторизованных
auth-access = write 

### Файл с пользователями
### По умолчанию в той же директории
password-db = passwd   // включаем авторизацию к репозиторию через файл passwd

УБИРАЙТЕ ПРОБЕЛЫ ПЕРЕД ПЕРЕМЕННЫМИ!!!!!!!!!!!!!
а то у я замучился искать ошибку она была в том что пробелов не должно было быть.

Настройка пользователей. Розрешим доступ user1 с паролем 123 к нашему репозиторию testrepo:

sudo nano /home/svn/testrepo/conf/passwd
[users]
user1 = 123
Запускаем сервер svn . Для етого ему нужно указать где начинать смотреть репозитории.
/usr/bin/svnserve -d -r /home/svn/

*
d : в режиме демона
*
r : указывает root директорию для svnserve

Можете проверить запущен ли сервер
ps ax |grep svn  

Сервер мы то запустили. Но нужно еще отображать содержимое svn  тоесть натравич апачь на какойто каталог.
Я сделал это следующим способом. Мне он удобнее тем что постоянно обновляются файлы и я могу их видеть через ssh.Я создам каталог в домашней деректории в которой после каждого комита будет обновлятся файлы залитые по svn.
Начнем!
Нам нужно сделать первый комит что бы потом svn знал куда ему обновления ложит после комита
svn co svn://127.0.0.1/testrepo 
У нас появится каталог в /home/testrepo на который нужно натравить апач,я не буду описывать как это сделать я думаю ничего страшного в настройке нет.
Теперь сделаем что бы при каждом комите на сервере обновлялись данные в /home/testrepo
cd /home/testrepo && /usr/bin/svn update --username='user' --password='pass' --non-interactive
Эту строчку нужно добавить в post-commit который находится в нашем репозитории /home/svn/hooks 
Нужно скопировать его с имененм post-commit вместо post-commit.tmpl и дать ему права на исполнение. 


Вот и все теперь можете розрабатывать сои сайти и тд и тп) Еси что не понятно пишите сюда или ищите меня в сети irc.freenode.net с ником [v-8]_jupiter.

3 комментария:

  1. Что бы писало в отдельную папку для апача
    Создать каталог /home/famous.
    а потом указать svn co svn://127.0.0.1/famousanimals.net/
    и будет норм

    ОтветитьУдалить
  2. cd /home/famous && /usr/bin/svn update --username='user' --password='pass' --non-interactive

    ОтветитьУдалить
  3. НЕМНОГО ПОЗЖЕ напишу толковую статью

    ОтветитьУдалить