Как стать автором
Обновить

Настройка взаимодействия Mercurial и Visual Studio

Время на прочтение3 мин
Количество просмотров2.8K
После недолгого пробного использования TFS я таки в нем разочаровался, ибо уж очень много он пожирает ресурсов, а для меня одного, выхлопа от него мало. После краткого осмотра иных вариантов замены системы контроля версии я остановился на Mercurial. Ибо:
1. Без проблем работает на Windows и NIX;
2. Стабилен;
3. Приличный список возможностей;
4. Множество утилит для интеграции с разнообразными IDE и шеллами;
5. Использует минимум ресурсов;
6. Множество плагинов.

Немного по-рывшись в Гугле, нашел плагин к Visual Studio 2010 — VisualHG, судя по описанию, довольно приличный. Осталось ему прокинуть доступ к репозиториям Mercurial'a на другом сервере под Windows 2008. Поскольку VisualHG работает только в связке с TortoiseHG, то пришлось создавать отдельный web-интерфейс к репозитариям, благо IIS на сервере уже стоит.
Начнем с того, что создадим отдельный каталог в дереве сайтов IIS, хотя в принципе можно и отдельный сайт.
Для наглядности пусть будет: localhost/hg/, а физический путь будет соответствовать V:\hg\.
Вместе с дистрибутивом Mercurial'a распространяются и скрипты на Python'e для создания web-страницы репозитариев. Находятся они в архиве library.zip в каталоге дистрибутива, если конечено было указано их извлечь при инсталяции. Этот самый архив распаковывается в какую-нибудь дочернюю директорию от localhost/hg/, например localhost/hg/lib/, как физический путь это будет — V:\hg\lib\.
Для запуска скриптов под IIS'ом из дополнительного ПО понадобится только Python 2.6 x86. Если использовать дистрибутив c бинарниками amd64, то скрипты попросту не будут работать. В чем причина, я так и не разобрался.
Подключение Python'a происходит через панель IIS'a в настройках «Сопоставления обработчиков». Туда необходимо добавить «сопоставление сценария» с следующими параметрами:
Путь запроса: *.cgi
Исполняемый файл: C:\Python26_x86\python.exe -u "%s %s"
Имя: Python

Имя и путь к дистрибутиву Python'a естественно может отличаться.
Для проверки работоспособности можно создать файл V:\hg\test.cgi c содержимым:
print 'Status: 200 OK'
print 'Content-type: text/html'
print '' 
print '<html><head><title>Тестовая страница</title></head>'
print '<body>'
print '<h1>Тестовая страница!</h1>'
print '</body></html>'

Если все отобразилось нормально, то можно переходить дальше.
После этого необходимо в папку hg добавить файл hgwebdir.cgi для запуска python-скриптов.
После его редактирования изменения выглядят так:


Так же в эту директорию необходимо добавить файл hgweb.config с таким содержимым:
[paths]
/ = repos/*

[web]
baseurl = /hg
push_ssl = false
allow_push = *

Где repos является каталог репозиториев, полный путь к которому — v:\hg\repos.
Для более удобного и наглядного использования можно ещё прицепить URL Rewrite. Он позводит убрать из строки адреса hgwebdir.cgi. Для этого необходимо создать правило с подобными параметрами:
Requested URL: Matches and Pattern
Using: Wildcards
Pattern: *
Action type: Rewrite
Rewrite URL: hgwebdir.cgi/{R:1}

Все остальные параметры по-умолчанию.
Для создания репозитория в качестве теста можно использовать консольную команду: hg.exe init v:\hg\repos\test.
Просмотр списка репозиториев:

Теперь для использования репозитория, в качестве минимального требования, будет только наличие TortoiseHG на произвольном компьютере. Для использования репозиториев Mercurial'a из MS VS 2010 достаточно установить плагин VisualHG, создать в директории проекта репозиторий и открыть этот проект в студии. Теперь оттуда будет возможность управлять коммитами, а из TortoiseHG заливать их на сервер.

Используемое ПО:
Mercurial 1.5.4
TortoiseHG 1.0.4
Python 2.6.4 x86
IIS 7.5
MS VS 2010
Теги:
Хабы:
+7
Комментарии5

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн