SVNManager

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:44, 7 июня 2018.
SVNManager
Subversion.png
Svnmanageradmin.png
Разработчик Apache Software Foundation
Тип веб-приложение
Website svnmanager


SVNManager — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования и конфигурирования хранилищ Subversion[1]. Также SVNManager представляет собой простой,быстрый и мощный механизм управления правами доступа к репозиторию. [Источник 1]

Возможности

  • Создавать, удалять, делать и восстанавливать дампы репозиториев,
  • Управлять пользовательскими аккаунтами для доступа к репозиториям,
  • Управлять группами,
  • Приглашать пользователей по электронной почте, чтобы они могли создать аккаунт на сервере

Требования

Для скачивания и функционирования SVNManager,нужны следующие компоненты:

  • Windows, Unix или др операционная система
  • Apache 2 [2]
  • Subversion инструменты и модули Apache
  • База данных (MySQL или SQLite)
  • PHP 5 (или лучше) + VersionControl_SVN
  • пакет SVNManager

Установка

Выбор операционной системы

Вообще говоря, если у вас есть выбор для операционной системы для сервера репозитория, выберите то, что вам больше всего нравится, я не думаю, что можно сказать, что конкретная версия Windows / Linux подходит лучше для такого приложения.

Apache2

Нужно установить веб-сервер Apache 2 из источника или с любым менеджером пакетов(на выбор пользователя).

Subversion

Нужно установить,по крайней мере, следующие Subversion Apache модули: «mod_dav_svn» и «mod_authz_svn» и инструменты командной строки: «svnadmin» и 'СВН.

<location /svn>
DAV svn

#Repository Folders Location (make sure this folder exists
#and keep location in mind)
SVNParentPath /srv/svn/repos

AuthType Basic
AuthName "Restricted Access"

#File will be created by SVNManager, keep location in mind!
AuthUserFile /srv/svn/htpasswd

Require valid-user
#SSLRequireSSL

#File will be created by SVNManager, keep location in mind
AuthzSVNAccessFile /srv/svn/accessfile

</location>

База данных

SVNManager зависит от серверной базы данных. Текущая версия SVNManager создается с Prado (старая версия) и использует ADODB для соединения с базой данных. Таким образом, возможно использовать любую базу данных SQL для хранения прав пользователей, хранилищ и доступа, указав имя источника данных (DSN) в конфигурации.

CREATE DATABASE svnmanager;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER on svnmanager.* to svnmanager identified by 'secret';
FLUSH PRIVILEGES;

PHP5

SVNManager кодируется в языке программирования PHP 5, так что потребуется установка PHP 5, как модуль Apache 2. После установки PHP вам придется установить модуль Pear (PHP Extension and Application Repository) с именем VersionControl_SVN. Вы можете сделать это, открыв окно терминала и набрав: 'sudo pear install -f -o VersionControl_SVN'.

SVNManager

И, наконец,нужно загрузить и установить пакет SVNManager и скопировать содержимое в веб-каталог (определенного в конфигурации Apache тегом «DocumentRoot»).

  • Укажите настройки локали. Вы можете получить список доступных опций, когда вы вводите «locale -a» в окне терминала.
$lang = "en_US.UTF-8";
  • Укажите расположение необходимых команд оболочки: «htpasswd» или «htpasswd2», «svn» и «svnadmin». Такие файлы можно найти с помощью команды «whereis», например (в окне терминала) «whereis htpasswd».
$htpassword_cmd = "/usr/bin/htpasswd";
$svn_cmd = "/usr/bin/svn";
$svnadmin_cmd = "/usr/bin/svnadmin";
  • Укажите директорию конфигурации Subversion, в которой инструменты Subversion будут хранить данные конфигурации. Затем укажите местоположения каталога репозитория и файлы конфигурации, как ранее настроено в Apache. Вы должны сделать эти локации руководством: «mkdir / srv / svnconfig / srv / svn / repos». Если хотите, вы можете сделать пустые файлы для htpasswd и файла доступа: 'touch / srv / svn / htpasswd / srv / svn / accessfile'. Важно: вы должны передавать права на эти файлы и каталоги для пользователя, чем запускать Apache, например «www-data», путем вызова «chown -R www-data.www-data / srv / svnconfig / srv / svn».
$svn_config_dir	=	"/srv/svnconfig";
$svn_repos_loc	= "/srv/svn/repos";
$svn_passwd_file	= "/srv/svn/htpasswd";
$svn_access_file	= "/srv/svn/accessfile"
  • Несмотря на опасность, SVNManager имеет возможность удаленно удалять репозитории. Чтобы уменьшить опасность и получить дополнительный улов для ваших пользователей, вы можете указать местоположение корзины. Тогда репозитории не будут удалены, но будут перемещены в указанное место. Если вы не укажете это, репозитории будут удалены навсегда! Так же, как местоположение репозитория, вы должны сделать этот каталог самостоятельно: «mkdir / srv / svn / trash; chown www-data.www-data / srv / svn / trash».
$svn_trash_loc	=	"/srv/svn/trash";
  • Хотя он не указан (и не рекомендуется), SVNManager также может генерировать пользовательские файлы svnserve. Это требует, чтобы имена пользователей и пароль сохранялись в виде обычного текста. Если вы не укажете этот параметр, этого не произойдет. С момента настройки этой опции SVNManager начинает хранить имя пользователя и пароль в виде обычного текста и будет генерировать файл паролей svnserver в указанном месте.
$svnserve_user_file="";
  • Затем вы должны настроить сервер smpt. Это необходимо для функции электронной почты-приглашения SVNManager. SVNManger отправит электронное письмо с 'svnmanager@smtp-server.net'.
$smtp_server = "smtp-server.net";
  • Другим важным параметром конфигурации является имя источника данных базы данных, которое будет использоваться с SVNManager. Как объяснено, SVNManager попытается создать таблицы при первом запуске. Это было протестировано с базами данных SQLite и MySQL. Когда вы указываете базу данных SQLite, целесообразно хранить ее где-то вне корневой папки документа или убедиться, что Apache не может прочитать указанное местоположение (например, с помощью файла .htaccess, содержащего «deny from all»): Make убедитесь, что это местоположение НЕ доступно снаружи (проверьте это)! Это может произойти, когда вы выбираете место примера, и Apache настроен на игнорирование файлов .htaccess. Пример MySQL, согласно базе данных примера, с модулем mysqli PHP:
$dsn	=	"sqlite://svnmanager/svnmanager.db";
$dsn	= "mysqli://svnmanager:secret@localhost/svnmanager";
  • Поскольку база данных пуста, вам нужно указать имя пользователя и пароль администратора для начала. Как только вы создадите учетную запись администратора в SVNManager, эта настроенная учетная запись больше не будет работать.
$admin_name	=	"admin";
$admin_temp_password	=	"admin";
  • Для более сложных конфигураций можно определить скрипт, который будет выполнен после создания репозитория. Вы можете использовать такой скрипт для настройки перехватов или дополнительных функций репозитория. Этот скрипт получит абсолютное расположение нового репозитория в качестве параметра. Когда эта строка конфигурации не указана, ничего не произойдет.
$post_create_script = "newrepo-script";

После настройки вы можете запустить SVNManager, открыв указанное местоположение в веб-браузере. При первом запуске SVNManager будут созданы таблицы базы данных. Во второй раз вы можете войти в систему с помощью настроенных учетных данных. Начните с создания безопасной учетной записи администратора и повторного входа в эту новую учетную запись.

Установка Web-интерфейса SVNManager для Subversion (SVN)

1. Установка SVNManager:

# wget http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.09.tar.gz

2. Распаковываем его и копируем в нужную директорию

# mkdir /var/www/html/svnmanager

3. Редактируем файл настроек: Переименуем conf.php.linux в conf.php

#mv conf.php.linux conf.php

Внесем свои настройки:

#nano /var/www/html/svnmanager/config.php

Теперь в файле следует исправить строку, которая содержит настройки подключения к БД:

$dsn = mysql://yourlogin:yourpassword@localhost/svnmanager;

В конфиге так же имеются пути по которым будут расположены папка с репозиториями и файлы для разграничения доступа.

//Subversion locations
$svn_repos_loc 	= "/var/svn/project_name/";
$svn_passwd_file = "/var/svn/project_name/conf/passwd";
$svn_access_file = "/var/svn/project_name/conf/accessfile";

4. Создаем файл accessfile в директории /var/svn/project_name/conf/:

#nano var/svn/project_name/conf/accessfile

С текстом (устанавливает права юзеров на репозитории):

[/]

* =

[firstproject:/]

yas = rw


5. Создаем базу данных svnmanager:

#mysql
>create database  svnmanager;
>show databases;
>exit;


6.
Svnmanager.png
Обратиться к приложению в браузере

Приложение сообщит, что таблиц нет и создаст их.Далее перезагрузите страничку и вы увидите, что svnmanager готов к работе. Временные пароль и имя для входа указаны в конфигурационном файле и обычно это admin admin.





7.
Svnmanageradmin.png
Войдите и создайте первого пользователя:

User Admin -> Add a new user to the repository system










8. Теперь вы можете войти под ним и создать первый репозиторий.[Источник 2]

Установка визуального SVN и создание хранилища (репозитория)

Работа с графическими SVN-клиентами гораздо проще, быстрее и понятнее начинающему пользователю,Очень хорошие графические SVN-клиенты реализованы для семейства операционных систем Windows:VisualSVN,TortoiseSVN.В данном видео описана установка VisualSVN.[3]

Как работать с SVN

Ветка в SVN - это всего лишь копия директории svn. Точнее так называемая «легкая копия», содержащая только изменения. Одинаковые файлы не копируются. Ветка имеет общую историю до момента её создания с основной веткой. В общем случае веток может быть сколько угодно, и каждая из них может ветвиться. Но в стандартом проекте принято иметь три постоянных ветки:

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

Программисты отвечают за то, чтобы:

  • Создать ветку тогда когда это нужно для стабильного существования проекта. В общем случае если вы чувствуете что задача будет длиться больше пары дней (а иногда и дня), и все это время вы не сможете безболезненно коммититься хотя бы пару раз в день, вам нужна ветка.
  • Поддерживать свою ветку в актуальном состоянии — то есть необходимо избавиться от панического страха перед командой merge как можно раньше, и мержить не реже чем комитишь. Иначе конфликтов при сливании ветки с транком не избежать.
  • Удалить ветку после завершения задачи. Ветки разработчиков — временные ветки, поэтому они должны удаляться, когда задача завершена. В крайнем случае, они могут пожить еще несколько дней, для уверенности, что в задаче нет больших ошибок. Дальше ветка никому нужна не будет, её можно удалять. Все равно, через некоторое время, она так далеко отойдет от основной линии разработки, что уже никакой мердж не сможет ей вернуть актуальность. [Источник 3]

Примечания

  1. Cвободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. // Википедия. Дата обновления: 04.03.17. URL:https://ru.wikipedia.org/wiki/Subversion (Дата обращения:07.05.17).
  2. Свободный веб-сервер.Является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. //Википедия. Дата обновления:16.02.17. URL:https://ru.wikipedia.org/wiki/Apache_HTTP_Server:(Дата обращения:07.05.17)
  3. https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9 Репозиторий(хранилище)

Источники

  1. SVNManager//SourseForge.[2017-2017]. Дата обновления:01.02.17 URL:http://svnmanager.sourceforge.net/index.php?page=intro (Дата обращения:08.05.17)
  2. Установка Web-интерфейса SVNManager для Subversion//PRO IT. .[2010-2017]. Дата обновления:01.02.17 URL:http://ablex.ru/2012/12/ustanovka-web-interfejjsa-svnmanager-dlya-subversion/ (Дата обращения:08.05.17)
  3. Работа с ветками SVN//TM.[2006-2017]. Дата обновления:21.11.08 URL:https://habrahabr.ru/post/45203/(Дата обращения:08.05.17)