Subversion

Материал из RSU WiKi
Перейти к: навигация, поиск

Содержание

Введение

At work clipart.pngЭто незавершённая статья, требующая доработки.
Что, зачем и почему


Установка

В дистрибутиве SLES Subversion находится на дополнительном SDK DVD [1], который необходимо скачать с сайта Novell и подключить в качестве репозитория YaST. После этого в разделе Software Management необходимо выбрать для установки следующие пакеты:

  • subversion
  • subversion-doc
  • subversion-python
  • subversion-server
  • subversion-tools
  • viewcvs

После этого необходимо прочитать QuickStart Guide, находящийся в:

/usr/share/doc/packages/subversion/README.SuSE

Настройка

Проделываем в консоли следующие операции:

Создаем пользователя и группу svn

useradd svn
groupadd svn

Добавляем в конфигурацю apache2 соответствующие модули:

a2enmod dav; a2enmod dav_svn

Создаем корень для проектов SVN

mkdir -p /srv/svn/{repos,user_access,html}

В файл /etc/apache2/conf.d/subversion.conf вносим следующие коррективы:

<IfModule mod_alias.c>
Alias /repos    "/srv/svn/html"
</IfModule>
<Directory /srv/svn/html>
        Options         +Indexes +Multiviews -FollowSymLinks
        IndexOptions    FancyIndexing \
                        ScanHTMLTitles \
                        NameWidth=* \
                        DescriptionWidth=* \
                        SuppressLastModified \
                        SuppressSize

        order allow,deny
        allow from all
</Directory>

# project repository files for ExampleProject
<Location /repos/ExampleProject>
        DAV svn
        SVNPath /srv/svn/repos/ExampleProject

        # Limit write access to certain people
        AuthType Basic
        AuthName "Authorization for ExampleProject required"
        AuthUserFile /srv/svn/user_access/ExampleProject_passwdfile
        AuthGroupFile /srv/svn/user_access/ExampleProject_groupfile
        <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require group ExampleProject_committers
        </LimitExcept>

        # Limit read access to certain people
        <Limit GET PROPFIND OPTIONS REPORT>
        Require group ExampleProject_committers
        Require group ExampleProject_readers
        </Limit>

</Location>

Теперь создаем сам репозиторий

cd /srv/svn/repos
svnadmin create ExampleProject
chown -R wwwrun:www ExampleProject/{dav,db,locks}

Подготваливаем файлы для хранения пользователей

touch /srv/svn/user_access/ExampleProject_passwdfile
chown root:www /srv/svn/user_access/ExampleProject_passwdfile
chmod 640 /srv/svn/user_access/ExampleProject_passwdfile

Заводим пользователей

htpasswd2 /srv/svn/user_access/ExampleProject_passwdfile ivan
htpasswd2 /srv/svn/user_access/ExampleProject_passwdfile oleg

Создаем файл /srv/svn/user_access/ExampleProject_groupfile и пишем в него следующее (ivan добавляет и читает, oleg только читает)

project1_committers: ivan
project1_readers: ivan oleg

Переходим к настройке apache2. Конфигурационный файл subversion.conf по-умолчанию не подключается. Создадим виртуальный хост для этих целей. Внеся соответствующие изменеия в DNS, скопируем заготовку /etc/apache2/vhosts.d/vhost.template в файл с именем нашего svn-сервера:

cp vhost.template svn.example.com.conf

Внесем в файл следующие изменения

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName svn.example.com
    
    ErrorLog /var/log/apache2/svn.example.com-error_log
    CustomLog /var/log/apache2/svn.example.com-access_log combined

    HostnameLookups Off
    UseCanonicalName Off
    ServerSignature Off

    Include /etc/apache2/conf.d/subversion.conf
    Include /etc/apache2/conf.d/subversion.doc.conf
    Include /etc/apache2/conf.d/subversion.viewcvs.conf
</VirtualHost>

Не забываем про Nginx если он используется в качестве front-end'a, добавляем виртуальный хост и для него; скопируем заготовку в /etc/nginx/vhosts.d/svn.example.com.conf и запишем

server {
        listen       80;
        server_name  svn.example.com;
	
        access_log  /var/log/nginx/svn.example.com-access_log;

	location /svn-manual/ {
	    alias   /usr/share/doc/packages/subversion/html/;
	    index  index.html index.htm;
	    autoindex on;
	}
	
        location / {
            proxy_pass         http://127.0.0.1:8080/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            client_max_body_size       10m;
            client_body_buffer_size    128k;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;	    
        }
}

Перезагружаем apache2 и nginx

service apache2 restart && rcnginx reload

Добавление пользователя

Создание пользователя:

  • Через Putty подключаемся к серверу svn.example.com
  • Cоздаем папку для нового пользователя (репозиторий):
 svnadmin create /var/lib/svn/training/<имя_пользователя>
  • Даем пользователю, использующемуся для запуска web-сервера apache (например apache:apache

или wwwrun:www), права на созданный каталог:

 chown -R apache:apache /var/lib/svn/training/<имя_пользователя>
  • Добавляем нового пользователя в файл http-авторизации web-сервера:
  htpasswd -m /etc/httpd/svn-auth-file <имя_пользователя>
  • Остается добавить права новому пользователю в конфигурационном файле SVN (/etc/subversion/authz). Файл открываем в тектовом редакторе:
 vi /etc/subversion/authz

Добавляем в открытый файл следующие строки:

 [<имя_пользователя>:/]
 <имя_пользователя>=rw

Адрес для svn-клиента (например TortoiseSVN):

http://svn.example.com/svn/<имя_пользователя>/

Работа с сервером

Конфигурационные файлы Linux

Visual Studio

At work clipart.pngЭто незавершённая статья, требующая доработки.
Работа с SVN с т.з. программиста


Eclipse

В качестве клиентского приложения я использую Eclipse с плагином Subclipse. Также использую PHP nightly плагин.

  • Чтоб установить их оба запустите Eclipse.
  • Потом зайдите в "Help->Software Apdates->Find and install", выберите "Search for new freatures to install" и "New remote site..." "PHPEclipse Nightly" с URL:
http://update.phpeclipse.net/update/nightly и "Subclipse" с URL: 
http://subclipse.tigris.org/update_1.2.x.
  • После этого Subclipse и PHP Eclipse будут установлены.
  • перегрузите Eclipse и зайдите в Window->Open Perspective->Other... выберите PHP.
  • Теперь у вас есть хорошая PHP среда.

Экспорт и импорт проекта.

  • Давайте создадим новый проект 'haibuy': New->Project->SVN->Checkout Projects from SVN.
  • Создадим новое месторасположение хранилища. Так как хранилище на одной с нами машине, мы можем указать путь таким образом: file:///svn/repository/haibuy/trunk.
  • Дальше "Next", выбираем верхнюю папочку и снова "Next", теперь выбираем куда сохранить нашу рабочую копию. Я ввел: /var/www/html/docs/haibuy, так что моя рабочая копия сразу на веб-сервере.
  • Теперь вы можете использовать подменю Team в контекстном меню (клик правой кнопкой мыши на проекте или файлах проекта) для работы с SVN.
  • Чтобы получить последнюю из хранилища: Team->Update. Чтоб закачать в хранилище свои изменения: Team->Commit...

См. также

Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты