Представлен релиз платформы GitLab 4.0для организации совместной работы Git-репозиториями, напоминающей по своим возможностям GitHub, но позволяющая развернуть web-сервис управления проектом на своём подконтрольном сервере. GitLab пользуется популярностью в области организации командной разработки различных корпоративных проектов, предоставляя инструменты похожие на Github Enterprise и Gitorious.
Предлагаемый GitLab web-интерфейс не копирует напрямую, но во многом напоминает GitHub. GitLab поддерживаетсоздание отдельных проектов, отслеживание ошибок, обработку запросов на добавление кода (рабочий процесс основан на обработке merge-запросов), навигацию по веткам и тегам, контроль за изменениями, рецензирование кода, многоуровневое управление доступом, Wiki, обмен небольшими кусками кода, наглядный анализ различий между версиями кода, средства визуализации ветвления репозитория и многое другое.
Код проекта написан на языке Ruby с использованием фреймворка Ruby on Rails и распространяется под свободной лицензией MIT. Для хранения данных используется Redis и MySQL/PostgreSQL. Для разграничения доступа к репозиториям используется надстройка Gitolite, предоставляющая средства для поддержания отдельной базы виртуальных пользователей для доступа к Git-репозиториям по SSH-ключам без создания системных аккаунтов. Параллельно развивается свободный сервер непрерывной интеграции GitLab CI, который можно использовать совместно с GitLab для автоматизации тестирования и постоянного контроля за качеством кодовой базы, в том числе обеспечивая проверку пересборкой для каждого вносимого изменения.
Из новшеств, добавленных в GitLab 4.0, можно отметить:
- Поддержка пространств имён для новых проектов (группа, пользователь, глобальный проект). Пространство имён (группа или отдельный пользователь) определяет владельца проекта. Администратор может перемещать проекты из одного пространства имён в другое;
- Для каждой группы разработчиков теперь создаётся отдельная поддиректория в gitolite, в рамках которой размещаются все проекты данной группы;
- Для пользователей добавлен атрибут с именем пользователя (для уже существующих пользователей при обновлении имя автоматически будут сгенерировано из email). Все проекты пользователя теперь ассоциируются с его именем (в форме имя_пользователя/проект);
- Для группы добавлена поддержка задания владельца группы, который может создавать проекты от имени группы и управлять доступом участников к каждому из проектов;
- Улучшена поддержка СУБД PostgreSQL;
- Расширены средства отправки уведомлений по email;
- Реорганизованы настройки;
- Добавлена возможность загрузки из web-интерфейса патчей для отдельных коммитов;
- Реализован режим быстрого добавления новых участников групп через страницу group#people;
- Прекращена поддержка SQLite из-за возникновения блокировок при одновременном обращении к gitlab нескольких пользолвателей.