Привет!
Все программисты делятся на тех, кто использует систему контроля версий, и тех кто ещё ёё не использует. Одной из самых популярных на сегодняшний день, является git. И хотя его структура направлена на децентрализованное хранение данных, все мы пользуемся github, assembla, bitbucket или githost. Главный недостаток этих хостингов, в том, что это чужие проекты, которые в любой момент могут прикрыть ваш аккаунт или слить данные налево. И тут на сцене появляется GitBlit! Git сервер на Java, полностью контролируемый вами, с множеством плюшек и веб-интерфейсом. Сегодня будем запускать его на бесплатном
Преамбула, можно не читать
Узнав в начале лета про бесплатный
Чуть-чуть теории, основные особенности.
Описание возможностей честно содрано с сайта и переведено на наш великий и могучий.
Четыре типа конфигураций контроля доступа для каждого хранилища:
- Анонимный просмотр, клонирование и загрузка в репозиторий
- Авторизованная загрузка в репозиторий
- Авторизованные клонирование и загрузка в репозиторий
- Авторизованные просмотр, клонирование и загрузка в репозиторий
- Заморозка репозитория (только для чтения)
Основные плюшки:
- Основано на JGit SmartHTTP сервлете
- Возможность объединения с другими серверами Gitblit
- RSS / JSON RPC интерфейс
- Кроссплатформенный Java Gitblit-менеджер
- Веб-интерфейс адаптированный для телефонов, планшетов и обычных компьютеров
- Использование groovy скриптов в хуках перед загрузкой на сервер и после; можно задать действие хуков для отдельного репозитория или глобально, для всех
- Уведомления по электронной почте после загрузки на сервер (через скрипт sendmail.groovy)
- Индексация Lucene ветвей репозитория
- Администраторы могут создавать, редактировать, переименовывать или удалять репозитории, пользователей и группы через веб-интерфейс или интерфейс RPC(менеджер)
- Владельцам репозитория доступно редактирование через веб-интерфейс
- Администраторы и владельцы репозитория могут установить главную ветвь через веб-интерфейс или интерфейс RPC
- LDAP аутентификации и дополнительный LDAP список пользователей
- Интеграция с gravatar
- Поддерживается отображения Git тегов
- Поддерживается отображения GH-страниц (Jekyll не поддерживается)
- Поддерживается отображения файлов Markdown
- Статистика ветвей (используется Google Charts)
- RSS каналы ветвей
- Поддерживается использование часового пояса браузера при отображении даты и времени
- Поддерживается скрытие e-mail адресов автора и коммиттера
- Регистронезависимый поиск по сообщениям коммитов, авторам и коммиттерам
- Подсветка синтаксиса исходного кода
- Дополнительные утилиты
- Страница документации, содержащая все Markdown файлы репозитория
- Страница Ticgit (на основе последнего выпуска MIT bf57b032 2009-01-27)
Языки:
- Английский
- Японский
- Испанский
- Польский
Есть желание перевести на Великий и Могучий?
Добро пожаловать на www.getlocalization.com/gitblit/
Скриншоты: gitblit.com/screenshots.html
Демо сервер: demo-gitblit.rhcloud.com
Теперь переходим к практике
Установка
Регистрируемся на openshift
Создаём JBoss Application Server https://openshift.redhat.com/app/console/application_types/jbossas-7
Дальше, следуя инструкциям, добавляем свой ssh-ключ и выполняем git clone.
У меня, например так:
git clone ssh://461e96291a2d2fb96b4423a0a329c7@habr-dark008.rhcloud.com/~/git/habr.git/
Переходим в папку приложения:
cd habr/
Очищаем папку от стандартной заглушки:
rm -R *
Скачиваем gitblit:
wget https://gitblit.googlecode.com/files/express-1.1.0.zip
Разархивируем в папку habr и удаляем архив:
unzip express-1.1.0.zip && rm express-1.1.0.zip
Настраиваем конфиг по адресу: habr/deployments/ROOT.war/WEB-INF/web.xml
Устанавливаем значения true:
web.enableRpcManagement
web.enableRpcAdministration
А у web.forwardSlashCharacter на !
Как здравомыслящие параноики перенаправляем весь трафик через https.
Создаём файл jboss-web.xml в этой же папке (WEB-INF) со следующим содержанием:
<jboss-web>
<security-domain>jboss-web-policy</security-domain>
<valve>
<class-name>org.jboss.web.rewrite.RewriteValve</class-name>
</valve>
</jboss-web>
Создаём файл rewrite.properties в этой же папке (WEB-INF) со следующими правилами переадресации:
RewriteCond %{HTTP:X-Forwarded-Proto} http
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
На этом настройка серверной части закончена.
Заливаем данные на сервер, выполняя сакральное:
git add .
git commit -m 'Init git server'
git push
Теперь последний этап настройки.
Скачиваем менеджер для удалённого администрирования gitblit: gitblit.googlecode.com/files/manager-1.1.0.zip
Подключаемся к нашему серверу habr-dark008.rhcloud.com, логин и пароль стандартные: admin, admin.
Необходимо лишь сменить пароль администратора, остальные настройки на ваше усмотрение.
Сервер так же можно настроить через веб-интерфейс, но автор советует использовать менеджер: в нём больше настроек, меньше глюков.
Более тонкая настройка: gitblit.com/setup.html
Ссылки
Исходники: github.com/gitblit или code.google.com/p/gitblit/source/list
Баг-трекер: code.google.com/p/gitblit/issues/list
Обсуждение: groups.google.com/group/gitblit
Google+: plus.google.com/114464678392593421684
Спасибо Суворову Андрею за рецензирование текста.
Автор: ddark008