Запросы на слияние – Merge Requests (MRs)
Основной инструмент для контроля качества кода перед объединением изменений в основную ветку.
Функции:
- Создание Merge Request после коммита в ветку.
- Автоматическое сравнение изменений с целевой веткой.
- Встроенный механизм обсуждений и ревью кода.
- Поддержка автоматического слияния после успешных проверок (CI/CD, ревью).
- Визуальное отображение конфликтов и помощь в их решении.
Просмотр изменений (Diff View)
Позволяет увидеть разницу между старым и новым кодом.
Виды отображения:
- Стандартный diff — покоммитное сравнение.
- Side-by-side diff — построчное сравнение.
- Inline diff — выделение изменений внутри строк.
Комментарии и обсуждения
Инструменты для совместной работы над кодом.
Функции:
- Комментирование конкретных строк кода.
- Групповые обсуждения и упоминания пользователей.
- Функция “Mark as resolved” для закрытия обсуждений.
- Автоматические TODO-списки на основе комментариев.
Уведомления о событиях
Система оповещений о ключевых событиях в проекте.
Поддерживаемые уведомления:
- Email-уведомления о новых коммитах, MR и комментариях.
- Настраиваемые оповещения в Slack, Mattermost, Telegram.
Merge Request Approvals
Механизм одобрения запросов на слияние для повышения качества кода.
Функции:
- Задание минимального количества обязательных одобрений.
- Настройка списка обязательных ревьюеров.
- Поддержка автоматических правил (auto-approval).
- Блокировка слияния без требуемых одобрений.
- Интеграция с Codeowners для обязательного ревью владельцами кода.
- Автоматический сброс подтверждений при изменениях в MR.
- Логирование всех действий, связанных с одобрением MR.
Codeowners
Система управления ответственностью за части кодовой базы.
Функции:
- Назначение владельцев для определённых файлов в проекте.
- Использование файла
CODEOWNERS
для определения владельцев кода. - Автоматическое назначение владельцев в рецензенты запросов на слияние.
- Интеграция с Merge Request Approvals для обеспечения обязательного одобрения владельцами.
- Поддержка групп владельцев и шаблонов (
*
,**
). - Возможность ограничения изменений в защищённых ветках только для владельцев кода.