Назад | Перейти на главную страницу

Размещение нескольких репозиториев (svn, hg, git)

Недавно я приобрел выделенный сервер, и мне нужно переместить на него несколько репозиториев из службы хостинга системы контроля версий. Не имея большого опыта в администрировании серверов, я понятия не имею, как это эффективно организовать. Что я ищу -

  1. Поддомены svn.host.com, hg.host.com, git.host.com, которые будут корнями к различным репозиториям, через ключи SSH
  2. легкое создание новых репозиториев
  3. аутентификация с использованием списка пользователей unix сервера, но с разрешениями для каждого проекта, а также по желанию открытый доступ только для чтения для некоторые репо

К сожалению, любой поисковый запрос, который я использую в Google, направляет меня на коммерческие размещенные решения, а не на руководство по развертыванию собственных. Мне нужно что-то вроде урезанного размещенного решения, но без необходимости того, чтобы пользователи могли создавать свои собственные репозитории.

Есть какие-нибудь предложения, учебные пособия или сценарии решения о том, с чего начать исследование? Решение с открытым исходным кодом для административного интерфейса для обработки этого (или, по крайней мере, для некоторых было бы идеально ...

Я использую только Git, поэтому постараюсь хотя бы помочь вам с этим:

Если вы не видите никаких проблем с администрированием ваших репозиториев через командную строку, gitosis должен с этим справиться.

Если вам действительно нужен веб-интерфейс, вы можете взглянуть на repo.or.cz (http://repo.or.cz/w/girocco.git) или великодушный (http://gitorious.org/gitorious). Repo.or.cz уродливее, но его намного проще установить (gitorious имеет открытый исходный код, но также является программным обеспечением gitorious.org - у них нет особого стимула писать красивые инструкции)

Вот более полный список вариантов: https://git.wiki.kernel.org/index.php/GitHosting

Любой из этих вариантов позволит вам легко создавать новые репозитории.

Теперь одно предостережение: вы никогда, НИКОГДА не должны использовать список пользователей сервера unix для разрешений репозитория. С ним достаточно легко возиться, и результаты легко катастрофичны (gitosis использует простую конфигурацию файла и ключи ssh. Должен помочь вам).

Другое дело, я не понимаю, зачем вам нужны репозитории subversion, HG и Git. В большинстве проектов используется только один из этих вариантов. Уточните, почему?

SVN может быть реализован с помощью Apache WebDAV на виртуальном хосте с использованием аутентификации unix и собственных списков контроля доступа пользовательского уровня Subversion. Я ничего не знаю о mercurial или git, но я надеюсь, что их тоже можно подключить к DAV.

SCM-менеджер может идеально подойти для ваших нужд:

Самый простой способ делиться своими репозиториями Git, Mercurial и Subversion и управлять ими через http.

  • Очень простая установка
  • Не нужно взламывать файлы конфигурации, SCM-Manager полностью настраивается через веб-интерфейс.
  • Не требуется Apache и установка базы данных
  • Центральное управление пользователями, группами и разрешениями
  • Готовая поддержка Git, Mercurial и Subversion
  • Полный API веб-службы RESTFul (JSON и XML)
  • Богатый пользовательский интерфейс
  • API простого плагина
  • Доступны полезные плагины (например, Ldap-, ActiveDirectory-, PAM-Authentication)

Когда вы хотите использовать SSH, то вам в основном придется ограничить ключи, отредактировав authorized_keys файл на сервере. Для Mercurial это можно сделать следующими способами:

  • Вы можете использовать contrib/hg-ssh сценарий для ограничения команд, которые люди могут выполнять при входе в систему с помощью SSH. Файл содержит заголовок, объясняющий, как его использовать, но в основном вы добавляете

    $ command="hg-ssh path/to/repo"
    

    перед ключом в authorized_keys файл. Это ограничивает ключ, так что его можно использовать только для push и pull в указанный репозиторий.

  • Вы также можете использовать сторонний меркуриальный сервер инструмент, если вы хотите что-то вроде gitois. Это позволяет вам управлять пользователями и их правами доступа, редактируя файлы в специальном репозитории администратора.

Увидеть Mercurial вики для некоторых других подобных инструментов для SSH.

Для HTTP, есть

  • Встроенный hgweb (Быстро) CGI или WSGI-скрипт, поставляемый с Mercurial. Это обрабатывает push и pull, но не позволяет создавать новые репозитории - для этого войдите на сервер.

  • Сторонний RhodeCode проект. Это дает вам веб-интерфейс для Mercurial, подобный Bitbucket, где вы можете настраивать пользователей и их права доступа. Он поддерживает аутентификацию LDAP, поэтому вы можете подключить его к существующей базе данных пользователей Unix.

Увидеть страница о публикации репозиториев Чтобы получить больше информации.

RhodeCode - это инструмент для браузера / управления репозиториями с открытым исходным кодом со встроенным сервером push / pull, LDAP / AD, системой разрешений и полнотекстовым поиском.

Вы можете увидеть это вживую здесь: http://demo.rhodecode.org/