Недавно я приобрел выделенный сервер, и мне нужно переместить на него несколько репозиториев из службы хостинга системы контроля версий. Не имея большого опыта в администрировании серверов, я понятия не имею, как это эффективно организовать. Что я ищу -
К сожалению, любой поисковый запрос, который я использую в 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/