Лучшие практики Pull Request
Pull request (PR) — это не просто способ слить код, это инструмент коммуникации. Хорошо оформленный PR упрощает ревью, помогает раньше находить ошибки и поддерживает чистую историю проекта.
Анатомия хорошего PR
Заголовок
Делайте его коротким и описательным. Используйте повелительное наклонение, как в сообщении коммита:
- Хорошо: "Add email validation to signup form"
- Хорошо: "Fix crash when user has no profile photo"
- Плохо: "Updates" или "Fixed stuff" или "WIP"
Описание
Хорошее описание PR отвечает на три вопроса:
- Что делает это изменение?
- Зачем оно нужно?
- Как ревьюер может его проверить?
## Что
Добавлена серверная валидация email-адресов на эндпоинте регистрации.
## Зачем
Пользователи могли отправлять невалидные email, что вызывало ошибки
в сервисе уведомлений.
## Как проверить
1. Отправьте POST на /api/signup с невалидным email
2. Убедитесь, что получаете ответ 422 с сообщением о валидации
3. Отправьте POST с валидным email и подтвердите успешную регистрацию
Размер
Меньшие PR — лучшие PR:
- Маленький (до 200 строк) — Легко проверить, быстрая обратная связь
- Средний (200-500 строк) — Приемлемо для фич
- Большой (500+ строк) — Сложно проверить тщательно, подумайте о разделении
Процесс Code Review
Как автор
- Сначала проверьте сами — Просмотрите свой собственный diff перед запросом ревью
- Добавляйте контекст — Оставляйте комментарии к сложным местам, объясняя логику
- Реагируйте на обратную связь — Отвечайте на каждый комментарий, даже если просто подтверждаете его
- Держите коммиты чистыми — Каждый коммит должен быть логической единицей изменений
Как ревьюер
- Будьте конструктивны — Предлагайте улучшения, а не просто критикуйте
- Задавайте вопросы — Если что-то непонятно, спросите, а не предполагайте
- Одобряйте, когда готово — Не блокируйте из-за мелочей; отметьте их, но одобрите, если основное изменение корректно
- Смотрите на общую картину — Имеет ли смысл подход? Есть ли более простой способ?
CI-проверки
Большинство проектов запускают автоматические проверки для каждого PR:
- Тесты — Проходит ли существующий набор тестов?
- Линтинг — Соответствует ли код стилевым рекомендациям проекта?
- Сборка — Успешно ли компилируется/собирается проект?
- Покрытие — Покрыт ли новый код тестами?
Зелёный статус CI означает, что автоматические проверки пройдены. Всегда дождитесь CI перед слиянием.
Стратегии слияния
Когда PR одобрен, есть несколько способов выполнить слияние:
Merge Commit
git merge --no-ff feature
Создаёт коммит слияния, который сохраняет полную историю ветки. Удобно для отслеживания, когда фичи были интегрированы.
main: A --- B --- M
\ /
feature: C --- D
Squash and Merge
Объединяет все коммиты PR в один коммит в целевой ветке. Удобно для поддержания чистой истории main, когда коммиты PR беспорядочны.
main: A --- B --- S (S содержит все изменения из C и D)
Rebase and Merge
Воспроизводит каждый коммит PR поверх целевой ветки. Удобно для линейной истории с сохранением отдельных коммитов.
main: A --- B --- C' --- D'
Итоговый рабочий процесс PR
- Создайте ветку от последнего
main - Делайте небольшие, целенаправленные коммиты с понятными сообщениями
- Отправьте ветку и откройте PR
- Напишите понятное описание, объясняющее что, зачем и как проверить
- Дождитесь прохождения CI
- Оперативно реагируйте на замечания ревью
- Выполните слияние с использованием предпочтительной стратегии команды
- Удалите ветку после слияния, чтобы поддерживать порядок
Распространённые ошибки
- Гигантские PR — Разбивайте большие изменения на меньшие, обозримые части
- Без описания — Всегда объясняйте, что делает ваш PR и зачем
- Игнорирование ошибок CI — Исправьте их перед запросом ревью
- Долгоживущие ветки — Регулярно сливайте или перебазируйте, чтобы избежать болезненных конфликтов
- Слияние без ревью — Даже маленькие изменения выигрывают от второй пары глаз