avatar

[Из песочницы] Настройка WebSVN на Windows для интеграции в Jira с поддержкой авторизации SVN и кодировки исходников Delphi

Опубликовал в блог Новости IT технологий
0
Выкладываю данную инструкцию, т.к. самому пришлось искать необходимую информацию по крупинкам. Инструкция рассчитана на людей, имеющих мало опыта в web технологиях и web разработке. Все программные комплексы настроены на выделенном под программистские нужды «сервере» под управлением Windows 7 Pro 32 bit.
Что имеем:
  • Visual SVN Server 2.6.0 (Apache Subversion 1.8.0 + Apache HTTP Server 2.2.25)
  • доступ к SVN уже настроен через ssl на порт 8443
  • Jira 6.0 с установленным плагином JIRA Subversion plugin
  • осуществлена базовая настройка JIRA Subversion plugin (в задачах отображаются соответствующие коммиты со списками файлов)
  • на SVN хранятся в том числе исходные коды, написанные на Delphi 7 с кодировкой CP1251
Что хотим получить:
  • просмотр содержимого коммитов
  • использование уже существующей системы авторизации SVN для доступа к исходному коду

1. Установка

  1. скачать с официального сайта установщик Thread Safe для windows (в последней версии появляется не сразу, поэтому был выбран php-5.3.27-Win32-VC9-x86.msi)
  2. устанавливать в C:\PHP\ (когда имею дело с чем-то мультиплатформенным, всегда избегаю пробелов в путях и русских символов)
  3. при установке выбирать «Apache 2.2.x module»; конфигурация Apache HTTP Server находится в директории Visual SVN Server, у меня это «C:\Program Files\VisualSVN Server\conf»
При установке файл C:\Program Files\VisualSVN Server\conf\httpd.conf будет автоматически дополнен строками
<code class="xml">#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:\PHP\"
LoadModule php5_module "C:\PHP\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL</code>
Читал в интернете рекомендации устанавливать PHP вручную из zip архива, но у меня с первого раза не вышло. Просто потому что не нашёл в поставке последней версии php библиотеки php5apache2_2.dll, а php5apache2_4.dll отказывалась загружаться на Apache.

2. Установка WebSVN

Тут и установкой то сложно назвать. Просто создать директорию C:\Program Files\VisualSVN Server\htdocs\websvn и скопировать в неё содержимое скачанного с официального сайта архива.

На этом этапе уже можно проверить доступность странички WebSVN. Для этого надо зайти на
https://yourserver:8443/websvn/index.CL_Prefix_php
, должна быть отображена страница приветствия с просьбой настроить список репозиториев.

3. Установка Cygwin

Суть проекта Cygwin — предоставить пользователям Windows распространенные в Unix системах приложения. Некоторые такие приложения необходимы и для WebSVN. На официальном сайте предоставлен довольно понятный инсталлятор. Необходимо установить следующие пакеты:
  • diffutils
  • enscript (подсветка кода, на всякий случай, если не понравится настроенная в WebSVN по умолчанию подсветка Geshi)
  • sed
  • tar
  • gzip
  • zip
Устанавливал в C:\cygwin\, пользуясь упомянутым выше принципом избегания пробелов.

4. Настройка WebSVN

Небольшая донастройка Apache
Для удобства доступа к заглавной странице WebSVN добавить следующий код в файл пользовательских настроек Apache C:\Program Files\VisualSVN Server\conf\httpd-custom.conf:
<code class="xml"><IfModule dir_module>
   DirectoryIndex index.html index.php 
</IfModule></code>
Настройка config.php
В соответствии с инструкцией по установке WebSVN, находящейся в файле C:\Program Files\VisualSVN Server\htdocs\websvn\doc\install.html, скопировать файл \include\distconfig.php в \include\config.php, и далее изменить его в соответствие с комментариями к параметрам. Мои настройки были следующие:
<code class="php">$config->setSVNCommandPath('C:\\Program Files\\VisualSVN Server\\bin');
$config->setDiffPath('C:\\cygwin\\bin');
$config->setEnscriptPath('C:\\cygwin\\bin');
	... (все пути ведут в 'C:\\cygwin\\bin')
$config->setTrustServerCert();
$config->parentPath('D:\\SVN\\Repositories');
$config->setIgnoreWhitespacesInDiff(true);
$config->setDefaultLanguage('ru');
$config->allowDownload();
$config->setDefaultFolderDlMode('gzip');
$config->useEnscript();
//$config->useGeshi();
$config->setRssEnabled(false);
</code>
Настройка авторизации, используемой в SVN
Сразу оговорюсь, что из-за перехода в Visual SVN версии 2.6.0 на распределенную по репозиториям систему доступа привязать к тем же файлам авторизацию WebSVN не удалось. Пришлось вручную создать общий для репозиториев файл авторизации, не используемый в Visual SVN. На данный момент эта проблема несущественна в силу малого размера команды разработчиков, но буду рад услышать рекомендации по избежанию поддержки файла авторизации вручную. Итак, продолжим:
  • создать общий для репозиториев файл авторизации (у меня это файл D:\SVN\Repositories\authz), пример заполнения можно увидеть в любом локальном файле авторизации (например, D:\SVN\Repositories\rep1\conf\authz); у меня содержимое самое простое:
    <code>user1=rw
    user2=rw
    user3=rw
    user4=rw
    </code>
  • в файл C:\Program Files\VisualSVN Server\conf\httpd-custom.conf добавить
    <code class="xml"><Location /websvn/>
       SVNListParentPath on
       SVNParentPath "D:/SVN/Repositories/"
       AuthType Basic
       AuthBasicProvider file
       AuthName "Please,authenticate in Subversion Repository"
       Require valid-user
       AuthUserFile "D:/SVN/Repositories/htpasswd"
       AuthzSVNGroupsFile "D:/SVN/Repositories/groups.conf"
       AuthzSVNAccessFile "D:/SVN/Repositories/authz"
    </Location>
    </code>
Теперь при входе на
https://yourserver:8443/websvn/ запрашивается авторизация, используемая в Visual SVN Server, а доступ настраивается в общем для репозиториев файле авторизации.

Настройка кодировки
WebSVN уже полностью функционален, но не хватает лоска. Например, комментарии в исходном коде Delphi 7, написанные на русском, отображаются кракозябрами. При этом сам сайт уже на русском языке. В чём подвох? На сайте WebSVN нашёл обсуждение данной проблемы: http://websvn.tigris.org/ds/viewMessage.do?dsMessageId=2968020&dsForumId=1547
. В кратце: функция php mb_detect_encoding, используемая для определения кодировки файла, просто врёт. Используем костыль, предложенный пользователем yaroslav, для этого в файле C:\Program Files\VisualSVN Server\htdocs\websvn\include\command.php заменить
<code class="php">return mb_detect_encoding($str.'a', $list);</code>
на
<code class="php">$res = mb_detect_encoding($str.'a',$list);
if ($res !== 'ISO-8859-1')
	return $res;
else
	return 'CP1251';</code>
Пока проблем с костылем не замечал. Проблема определения кодировки файла подробна раскрыта в посте пользователя m00t:
http://habrahabr.ru/post/107945/. Также там описан рабочий способ определения кодировки, использование которого поможет избежать костылей, и их потенциальных проблем.

Настройка приветствия на заглавной странице
В файлах C:\Program Files\VisualSVN Server\htdocs\websvn\templates\\index.tmpl можно заменить текст приветствия по умолчанию на свой. Выделяю эту настройку в отдельный пункт, т.к. при использовании русского текста файл необходимо записать в кодировке utf8.

5. Настройка JIRA Subversion plugin

Зайти в администрирование -> плагины -> Subversion Repositories, в каждом репозитории настроить пути (на примере репозитория rep1):
view fCL_Prefix_ormat: https://yourserver:8443/websvn/filedetails.CL_Prefix_php?repname=rep1&path=${path}

changeset fCL_Prefix_ormat:     https://yourserver:8443/websvn/revision.CL_Prefix_php?repname=rep1&location=/&rev=${rev}

file added fCL_Prefix_ormat:    https://yourserver:8443/websvn/filedetails.CL_Prefix_php?repname=rep1&path=${path}&rev=${rev}

file modified fCL_Prefix_ormat: https://yourserver:8443/websvn/diff.CL_Prefix_php?repname=rep1&path=${path}&rev=${rev}&sc=0

file replaced fCL_Prefix_ormat: https://yourserver:8443/websvn/filedetails.CL_Prefix_php?repname=rep1&path=${path}&rev=${rev-1}&sc=0

file deleted fCL_Prefix_ormat:  https://yourserver:8443/websvn/filedetails.CL_Prefix_php?repname=rep1&path=${path}&rev=${rev-1}&sc=0


Источник: habrahabr.ru,
получено с помощью rss-farm.ru


0 комментариев RSS
Нет комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.