4 марта 2011 в 11:14

hGate – web врата в управление репозиториями Mercurial

Краткая версия

Что предлагается: web интерфейс управления репозиториями и пользователями mercurial — hGate.
Кому полезно: тем, кто использует связку Mercurial+HgWebDir и создает репозитории или пользователей чаще, чем раз в пару месяцев.
Где скачать и как установить: bitbucket.org/shedar/hgate
Если Вам интересно, зачем это было делать, подробный перечень возможностей и что будет дальше — продолжаем.

Предыстория

В последнее время Mercurial прочно вошел в ту часть моей жизни, которая связана с программированием. Все рабочие проекты по умолчанию отправляются в систему контроля версий, личные, тестовые и экспериментальные – тоже, если они живут больше нескольких дней или имеют практическую ценность. Для доступа к репозиториям был настроен HgWebDir в связке с nginx.
Всё было бы хорошо, если бы не одно «но» – HgWebDir позволяет просматривать список репозиториев и изменений, но он не предназначен для управления репозиториями и пользователями. Для создания нового репозитория, для настройки прав доступа, создания пользователя или смены пароля приходилось заходить на сервер консолью и выполнять соответствующие действия.

В поисках готового решения

Опыт подсказывал, что если проблема существует не первый день, то кто-то её пытался решать. Впечатление наиболее завершенного из найденных производил скрипт phpHgAdmin. Но радость длилась недолго. Установив его на двух разных серверах, получил одинаковый результат. Основные проблемы:
— Группы и репозиории смешивались в странном порядке;
— Группы не открывались;
— Настройки репозиториев, созданных не им, редактировались с проблемами;
— Решающая проблема – проект не развивается, автор на связь выходит, но не более того.

Свое решение

Прикинув «за» и «против» доработок phpHgAdmin и создания своего решения, было решено создать своё. К счастью, нашлось еще два человека, готовых поучаствовать, которых заинтересовала идея. К несчастью, одного из них почти сразу засосала работа. Огромное спасибо Андрею (gavaec) за то, что взял на себя большую часть работы по проекту.

Технические особенности

Язык: python;
Фреймворк: django;
OS: Linux
Сайт: bitbucket.org/shedar/hgate

Функциональные возможности

— создание репозиториев
— управление пользователями (создание, удаление, смена пароля)
— создание, удаление, изменение групп репозиториев
— редактирование основных параметров файла настроек hgwebdir
— настройка прав доступа репозиториев
— редактирование основных параметров репозиториев
— просмотр прав доступа пользователя — показывает матрицу прав на различные репозитории

Как это выглядит

Главная:


Редактирование настроек репозитория:


Управление пользователями:


Известные недоработки

— Не поддерживается авторизация, ограничение доступа нужно делать средстваним web сервера
— поддерживается редактирование не всех параметров файлов настроек
— коллекции репозиториев должны задаваться через секцию paths, как рекомендуется в руководстве, секция collections на текущий момент не поддерживается.

План развития

Что планируется в ближайшем будущем, помимо причесывания и повышения надежности существующего кода:
— Контроль правильности всех настроек hGate для облегчения установки и поиска проблем
— Более полная поддержка параметров конфига
— Поддержка нескольких профилей. Когда на одном сервере крутится несколько независимых экземпляров mercurial, хочется, чтобы все они управлялись через hGate
— Собственная авторизация
— Полная поддержка групп с высокой вложенностью (вида /home/hg/demo/**)
— Локализация

Если у Вас есть пожелания и предложения – пишите. Для ошибок и проблем открыт багтрекер.
Shedar @Shedar
карма
39,0
рейтинг 0,0
Пользователь
Похожие публикации
Самое читаемое Разработка

Комментарии (5)

  • +1
    Черт, только что подумал о том же самом! Спсибо :)
  • 0
    Удобно, спасибо!
  • +2
    Веб-врата меркурирая? =)
  • +1
    А как-же rhodecode? Вот пример: hg.python-works.com/
    • 0
      Чтобы не разделять дискуссию, обсуждение начали в трекере — bitbucket.org/shedar/hgate/issue/1/d1abbadnssggl
      Если кратко, то сыграло два фактора:
      1. я не наткнулся на него в свое время,
      2. rhodecode ориентирован на несколько другие задачи

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.