Опишите ваш опыт работы с Pull/Merge Requests и процесс код-ревью.

Ответ

Да, Pull/Merge Request (PR/MR) — это основной инструмент для командной работы и код-ревью в моей практике. Я работал с обоими: Pull Requests на GitHub и Merge Requests на GitLab.

Мой стандартный рабочий процесс выглядит так:

  1. Создание ветки: Для каждой новой задачи или исправления я создаю отдельную ветку от основной (main или develop), используя семантическое именование (например, feature/add-user-auth или fix/payment-bug).
    git checkout -b feature/add-user-auth
  2. Разработка и коммиты: В процессе работы я делаю атомарные, логически завершенные коммиты с понятными сообщениями.
  3. Создание PR/MR: После завершения работы я отправляю ветку в удаленный репозиторий и создаю Pull/Merge Request. В описании я указываю, какую проблему решает мой код, и при необходимости добавляю ссылки на задачу в трекере (например, Jira).
  4. Код-ревью: Я назначаю одного или нескольких коллег в качестве ревьюеров. Мы обсуждаем предложенные изменения в комментариях к PR/MR. Я вношу правки на основе их замечаний.
  5. Мерж: После получения одобрения (approve) от ревьюеров и успешного прохождения всех CI-проверок (линтеры, тесты), я вливаю изменения в основную ветку. В зависимости от политики команды, это может быть сделано через merge, squash and merge или rebase and merge.

Цель PR/MR — не только влить код, но и получить обратную связь, поделиться знаниями и убедиться, что новые изменения соответствуют стандартам проекта.

Ответ 18+ 🔞

А, ну вот, подъехали к самому соку, к этой священной корове любого разработчика — к пулл-реквестам, они же мерж-реквесты, ёпта! Это ж как воздух, без этого нихуя не работает, если, конечно, ты не одиночка-отшельник, который пишет код в пещере.

Так, по пунктам, как у меня обычно этот цирк с конями происходит, блядь:

Первое — отпочковаться. Сижу я на своей основной ветке, main там или develop, и думаю: "Ну всё, щас мы тут наворочаем". Создаю себе отдельную песочницу, чтоб никому не мешать и самому не наступить в дерьмо. Имя ветке даю не абы какое, а чтоб сразу ясно было, что там творится.

git checkout -b feature/add-user-auth

Вот, типа, "фича/добавить-авторизацию-юзера". Прозрачно, как слёзы младенца, блядь.

Второе — наворотить. Тут уже начинается магия, или, чаще, ебля с отладкой. Но коммиты стараюсь делать не одной кучей в последний момент, а по чуть-чуть, осмысленно. Чтоб потом, если что, можно было откатиться к какому-то вменяемому моменту, а не к состоянию "о, бля, всё сломалось".

Третье — выставить на показ. Когда чувствую, что готово (или дедлайн уже дышит в затылок), закидываю свою ветку на сервер и создаю этот самый PR/MR. Тут главное — не полениться и в описании написать нормально: что сделал, зачем, на какую задачу из Jira (если она есть, эта зловредная Jira, блядь). Иначе ревьюеры начнут задавать вопросы, от которых волосы дыбом встают. "А это че такое? А зачем это тут?".

Четвёртое — священный обряд код-ревью. Назначаю пару-тройку несчастных коллег, которые должны это всё прочитать. И начинается! Иногда это конструктивно: "А давай тут паттерн применим", "А тут потенциальный баг". А иногда такие комментарии прилетают, что сидишь и думаешь: "Мужик, ты вообще в контекст вникал, или просто придраться захотел?". Но в целом, если без истерик, это полезнейшая штука. Один всегда косяк пропустит, а второй заметит. Или наоборот, ты им покажешь какую-нибудь хитрожопую фичу, которую они не знали. Обмен знаниями, ёпта!

Пятое — триумфальное (или не очень) слияние. Если все апрувы собраны, если CI/CD пайплайн не сдох, зелёный такой и красивый, — можно мержить. Тут уж как команда договорилась: то ли коммиты сквощить, то ли ребейз делать, то ли просто мержить как есть. Главное — не сломать основную ветку, а то тебя потом всем отделом вспоминать будут, да не добрым словом.

А вообще, смысл-то всей этой движухи не просто код засунуть в main. Смысл — чтобы все были в курсе, что происходит, чтобы качество не хромало, и чтобы один человек не стал тем самым "бутылочным горлышком", которое знает всё, но ни с кем не делится. Коллективная ответственность, блядь! Ну, или коллективное веселье, когда всё идёт по пизде.