При работе хотя бы двух людей над одним проектом уже более остро встают проблемы совместной работы над одним файлом, откат к предыдущей версии или сравнение с предыдущей версией документа. Существуют различные программные средства чтобы автоматизировать этот процесс и не заставлять вас создавать при изменении файла резервные копии вручную. Одним из таких средств является система контроля версий SVN.
При создании веб-проектов возникает потребность создать хранилище файлов с контролем версия прямо в глобальной сети, чтобы несколько разработчиков, которые находятся в разных уголках нашей планеты могли использовать его.
Возможно при первом знакомстве с SVN не особо удобно будет управлять такими вещами из консоли по SSH. Давайте разберемся как это сделать проще.
Что нам требуется?
- Создать пользователей
- Создать хранилище
- Назначить пользователям права
- Опробовать доступность репозитория в сети
Существует простой в использовании и интуитивно понятный инструмент для выполнения первых трех пунктов.
Этот инструмент называется svnmanager. Представляет он собой web-приложение (напор php-скриптов), которое предоставляет графический интерфейс для создания хранилищ, пользователей и назначения прав последним.
Установить это приложение можно либо из репозиториев пакетов вашего дистрибутива, либо скачав с официального сайта svnmanager. Установите его. Если вы хотите установить не с помощью менеджера пакетов, а вручную, то расположите скрипты в папке /srv/www/htdocs/svnmanager, таким образом, чтобы Apache отдавал его по запросу из браузера https://localhost/svnmanager (или IP-адрес или доменное имя, если вы устанавливаете в web).
По умолчанию svnmanager настроен на работу с СУБД sqlite. Но вы можете исправить это и использовать mysql. Так или иначе вам придется открыть конфигурационный файл /srv/www/htdocs/svnmanager/config.php. В нем следует исправить строку, которая содержит настройки подключения к БД.
$dsn = 'mysql://yourlogin:yourpassword@localhost/svnmanager';
В конфиге так же имеются пути по которым будут расположены папка с репозиториями и файлы для разграничения доступа.
//Subversion locations $svn_repos_loc = "/srv/www/repos"; $svn_passwd_file = "/srv/www/repos/passwdfile"; $svn_access_file = "/srv/www/repos/accessfile";
Далее следует создать базу данных svnmanager и обратиться к приложению в браузере по адресу https://localhost/svnmanager. Приложение сообщит, что таблиц нет и создаст их. Далее перезагрузите страничку и вы увидите, что svnmanager готов к работе. Временные пароль и имя для входа указаны в конфигурационном файле и обычно это admin admin.
//Administrator account $admin_name = "admin"; $admin_temp_password = "admin";
Войдите и создайте первого пользователя.
Теперь вы можете войти под ним и создать первый репозиторий. Путь он будет называться firstrepo. svnmanager расположит его в папке firstrepo, которая будет находиться в директории, указанной у вас в переменной $svn_repos_loc конфигурационного файла.
У вас есть репозиторий, но пока что вы не можете обратиться к нему по http. Нам следует настроить Apache.
Для этого отредактируем файл /etc/apache2/httpd.conf. Добавим в конец файла следующие строки:
# Subversion SVN <Location /svn> DAV svn SVNListParentPath on SVNParentPath /srv/www/repos # SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Local subversion repositories" AuthUserFile /srv/www/repos/passwdfile AuthzSVNAccessFile /srv/www/repos/accessfile Require valid-user </Location>
Параметры Apache для настройки http-доступа к репозиторию
Настройка | Пояснение |
---|---|
<Location /svn> | Означает, что хранилища Subversion доступны по URL https://YourServerName/svn/ |
DAV svn | Сообщает Apache, какой модуль будет ответственен за обслуживание этого URL, - в данном случае модуль Subversion. |
SVNListParentPath | Для Subversion версии 1.3 или более новой, это указание разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath. |
SVNParentPath | предписывает Subversion искать хранилища в данной папке |
SVNIndexXSLT | Используется для того, чтобы просмотр через веб-обозреватель выглядел более симпатично. |
AuthType Basic | Для включения базовой аутентификации, т.е. имя_пользователя/пароль |
AuthName | Используется как информация для пользователя в диалоге аутентификации, сообщая, для доступа к какой области требуется эта аутентификация |
AuthUserFile | Указывает, какой файл паролей использовать при аутентификации |
AuthzSVNAccessFile | Расположение файла доступа для путей внутри хранилища Subversion |
Require valid-user | Предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль, будет разрешён доступ к URL |
Теперь перезапустите Apache
/etc/init.d/apache2 restart
На этом этапе все уже должно работать и мы можем протестировать это. Для этого откроем в браузере адрес https://localhost/svn/firstrepo (вместо localhost можете использовать адрес того сайта, для которого вы устанавливали репозиторий). Если браузер запросит у вас пароль и логин, то значит мы все сделали верно. Если после ввода правильных пароля и логина браузер показывает ошибку Apache, то возможно у ваших файлов /srv/www/repos/passwdfile и /srv/www/repos/accessfile стоит запрет на чтение. Исправьте ситуацию.
При отсутствии каких-либо проблем вы увидите, что вы в хранилище.
Большое спасибо за статью, давно искал как настроить веб интерфейся для SVN. Будут еще статьи по теме? Например интеграция с популярными IDE, как работать с контролем версий и тд и тп.
Спасибо за feedback, Valentin! Обратная связь очень важна, так как позволяет видеть в правильном-ли направлении я работаю, интересен-ли материал людям и что бы они хотели здесь прочитать.
Я давно подумывал написать про использование SVN и про интеграцию с IDE. Поэтому как бы в бонус за то, что вы откликнулись, я напишу небольшую статью на эту тему в ближайшие несколько дней. Она появится в разделе SVN.
Вы можете воспользоваться формой подписки на email (справа, под меню сайта) чтобы не пропустить эту и другие интересные статьи.
Форма подписки добавлена недавно. Дайте, пожалуйста, мне знать, если вдруг она будет работать неверно (например, вам не придет ссылка для подтверждения подписки).
всем привет. у меня не получается настроить subversion ((
при попытке открыть https://localhost/svnmanager выдает ошибку
ПОдскажите плиз в чем проблема ))
Fatal Error
[2] mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at \’reading initial communication packet\’, system error: 111 (@line 340 in file /home/webmaster/www/maincode.ru/svnmanager/prado-2.0.3/framework/Data/adodb/drivers/adodb-mysql.inc.php).
Debug Backtrace
Наверное проблема с настройками в /srv/www/htdocs/svnmanager/config.php.
Там настройки подключения к БД.
Mysql вообще у вас работает?
Mysql работает, у меня хостинг в котором уже все установлено и настроено по умолчанию. Мне только не понятно какие логин и пароль нужно указать в файле config.php
Необходимо указать логин и пароль к mysql. Их можно уточнить у вашего хостера.
Так же вам необходимо создать новую базу данных с именем svnmanager. Это можно сделать через phpMyAdmin, например.
я все понял, спасибо )
на фре из портов втри строчки любой пакет ставиться как его на линукс ето накатить то
На Линуксе из репозиториев - в одну строчку.
При открытии главной страницы показывает пустую страницу. Подскажите лиз в чем может быть проблема
Посмотрите логи Апача. Возможно там кроется ответ
Спасибо. Нашелся