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/**)
    — Локализация

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

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