Ответ
Pull Request (PR) и Merge Request (MR) — это концептуально одно и то же: механизм для обсуждения, ревью и интеграции изменений из одной ветки Git в другую. Основное различие — в терминологии, принятой на разных платформах.
- Pull Request (PR) — это термин, используемый в GitHub и Bitbucket. Идея в том, что вы "предлагаете" (
request) целевой ветке "затянуть" (pull) ваши изменения. - Merge Request (MR) — это эквивалентный термин в GitLab. Акцент сделан на результате операции — слиянии (
merge).
С точки зрения DevOps-практик функциональность идентична:
- Ветвление (feature branch).
- Запрос на слияние с основной веткой (main/master).
- Проверки (CI pipelines).
- Ревью кода коллегами.
- Утверждение (approval) и последующее слияние.
Небольшие нюансы могут быть в реализации:
- В GitLab настройки правил для MR (требования к аппрувам, squash merge) часто более глубоко интегрированы в конвейер.
- GitHub Actions и GitLab CI/CD предоставляют разный синтаксис для триггеров на события PR/MR.
Пример workflow для DevOps-конвейера:
# .gitlab-ci.yml (для Merge Request)
deploy_to_review:
stage: deploy
script:
- echo "Deploying branch $CI_COMMIT_REF_NAME to review environment"
- ./deploy.sh review
only:
- merge_requests # Запуск только для MR
# Аналогичный триггер в GitHub Actions будет использовать `pull_request`.
Для инженера разница минимальна: процесс ревью и слияния кода универсален, а название зависит от выбранной платформы хостинга Git.