Approval (аппрув) — это подтверждение в GitHub, GitLab или Bitbucket, что pull request прошёл code review и может быть слит в целевую ветку. Владелец репозитория настраивает количество обязательных аппрувов, после которых PR разблокируется для merge. По данным документации GitHub (2026), в процессе ревью ревьювер может оставить комментарии, запросить изменения (Request Changes) или одобрить PR (Approve). Approval — это не только формальность, но и юридический акт: ревьювер берёт на себя ответственность за качество принимаемого кода.
Главное
Аппрув (approval) — это положительная рецензия на pull request, означающая, что ревьювер проверил код, не нашёл критических проблем и считает изменения готовыми к слиянию. В интерфейсе GitHub это зелёная кнопка «Approve» на странице PR. После аппрува автор (или любой участник с правами на запись) может выполнить merge.
Процесс аппрува — часть Branch Protection Rules. Владельцы репозитория настраивают обязательные требования: минимальное количество аппрувов (например, 1 или 2), кто может аппрувить (кодовладельцы, члены команды), и должен ли PR быть аппрувнут повторно после изменений (Dismiss stale reviews). Без настройки правил аппрув — опциональный шаг, но в профессиональных командах он обязателен.
GitLab использует аналогичный механизм с названием Approval Rules. В GitLab можно настроить, сколько аппрувов требуется от разных групп (например, 2 от разработчиков бэкенда и 1 от DevOps). После получения всех обязательных аппрувов PR автоматически разблокируется для merge при условии зелёного CI/CD пайплайна.
В GitHub и GitLab существует три типа ревью, которые ревьювер может оставить на pull request. Каждый тип имеет разный статус и последствия для процесса слияния. Approve — зелёный, Request Changes — красный, Comment — нейтральный серый. Выбор типа зависит от качества кода и готовности изменений к принятию.
Approve — ревьювер подтверждает: код написан корректно, соответствует стандартам, не содержит очевидных ошибок и может быть слит. Approve не означает, что код идеален — только что он достаточно хорош для продакшна. Если есть мелкие замечания (стиль, naming), их можно оставить как комментарии без блокировки PR.
Request Changes — ревьювер находит проблемы, которые необходимо исправить до merge: логические ошибки, уязвимости, нарушение архитектуры, отсутствие тестов. После Request Changes PR блокируется, и для разблокировки требуется повторный аппрув от того же ревьювера (если включена опция Dismiss stale reviews при новых коммитах).
Branch Protection Rules — это механизм GitHub для контроля качества слияний. Настраивается в Settings → Branches для каждой защищённой ветки (main, develop, release/*). Основные параметры: количество обязательных аппрувов, кодовладельцы (CODEOWNERS), обязательная проверка CI/CD, и запрет на push без PR.
Параметр Dismiss stale pull request approvals — автоматически снимает аппрувы, если в PR добавлен новый коммит. Это гарантирует, что ревьюверы аппрувят именно ту версию кода, которая будет слита. Без этой настройки автор может добавить новый код после аппрува, и он попадёт в main без повторной проверки.
CODEOWNERS — файл в корне репозитория, который назначает ответственных за разные директории. Если PR затрагивает файлы, принадлежащие кодовладельцу, его аппрув становится обязательным. CODEOWNERS позволяет распределить зоны ответственности: iOS-разработчик отвечает за Swift-файлы, DevOps — за конфиги Docker, тестировщики — за тестовые сценарии.
# Example CODEOWNERS file in repo root
# iOS developers own Swift code
*.swift @team/ios-developers
# DevOps owns CI/CD configuration
.github/workflows/* @devops-team
# QA engineers review tests
**/tests/* @qa-engineers
# Default owners for everything else
* @tech-leads
Code review перед аппрувом — это систематическая проверка кода, а не беглый просмотр diff. Качественный code review включает проверку архитектуры, логики, стиля, тестов и безопасности. Без этой проверки аппрув становится формальностью, а не инструментом контроля качества.
Что проверяется в первую очередь: логика изменений — решает ли код поставленную задачу, нет ли побочных эффектов, корректна ли обработка граничных случаев. Тесты — покрывают ли новые тесты все сценарии, проходят ли существующие тесты после изменений. Безопасность — нет ли SQL-инъекций, XSS, утечек чувствительных данных.
Что не должно быть предметом ревью: стиль форматирования (для этого есть линтеры и formatter'ы), архитектурные решения, принятые заранее (они обсуждаются до написания кода). Если в ревью больше 400 строк или оно занимает больше часа — это сигнал, что задача слишком велика и требует декомпозиции. Лучшие практики ревью — порции по 200-400 строк в течение 24 часов после создания PR.
Типичный workflow с аппрувом в команде из 5-10 разработчиков выглядит так: разработчик создаёт PR, назначает ревьюверов (обычно 1-2 человека из команды или кодовладельцев), CI/CD запускает автоматические проверки. После получения всех обязательных аппрувов и зелёного CI автор выполняет merge. Время от создания PR до merge в среднем составляет от 2 часов до 2 дней в зависимости от сложности.
GitHub Actions позволяют автоматизировать merge после аппрува. Если настроены правила веток, GitHub сам блокирует merge до выполнения всех условий. Некоторые команды используют bors-ng или Mergify — ботов, которые автоматически сливают PR после получения всех аппрувов и прохождения CI. Это ускоряет процесс и исключает человеческий фактор при merge.
Современный подход — trunk-based development с короткоживущими ветками. В этом workflow аппрув должен быть получен в течение нескольких часов, иначе задача считается устаревшей и требует повторной синхронизации с main. Команды с высокой культурой ревью стремятся к времени аппрува не более 4 рабочих часов.
Самая частая ошибка — формальный аппрув без реальной проверки кода. Когда PR большой или deadline близок, ревьювер может нажать Approve, не вникая в изменения. Это обесценивает весь процесс code review. Решение: устанавливать лимит на размер PR (не более 400 строк) и использовать инструменты анализа кода (SonarQube, CodeClimate) для автоматической проверки.
Вторая ошибка — чрезмерно строгий аппрув. Ожидание идеального кода блокирует разработку. Ревьюверы иногда требуют исправить стилистические замечания, которые не влияют на качество. Решение: чётко разделять обязательные замечания (блокирующие) и опциональные предложения (комментарии). GitHub позволяет явно указать, является ли комментарий блокирующим.
Третья ошибка — аппрув без проверки CI/CD. Даже если код выглядит корректно, он может не компилироваться или падать на тестах. Настроенные Branch Protection автоматически блокируют merge при красном CI, но некоторые команды отключают эту защиту для ускорения. Решение: всегда проверять статус CI перед аппрувом и никогда не одобрять PR с красным пайплайном.
Часто задаваемые вопросы
Отаппрувить — одобрить pull request в GitHub/GitLab после code review, нажав кнопку Approve. Это означает, что код проверен, соответствует стандартам и готов к слиянию. Аппрув — обязательное условие для merge в защищённые ветки с настроенными правилами Branch Protection.
Зависит от правил репозитория. Минимальный стандарт — 1 аппрув от ревьювера, не являющегося автором. Для критичных компонентов (платёжные модули, безопасность) может требоваться 2-3 аппрува. Количество настраивается в Branch Protection Rules GitHub или Approval Rules GitLab.
Approve — код готов к слиянию, замечания опциональны. Request Changes — код содержит обязательные к исправлению проблемы, PR блокируется до повторного ревью. При Request Changes merge невозможен, при Approve — доступен после прохождения CI/CD проверок.
Нет, автор не может аппрувнуть собственный PR — это противоречит принципу независимого ревью. GitHub блокирует такую возможность на уровне интерфейса. Даже если настройки репозитория не запрещают, аппрув автора не считается действительным, так как не было внешней проверки кода.
Dismiss stale review — опция Branch Protection, которая автоматически снимает аппрувы при добавлении новых коммитов в PR. Гарантирует, что ревьюверы одобряют именно текущую версию кода. Без этой опции автор может изменить код после аппрува, и изменения попадут в main без дополнительной проверки.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также