Что такое pull request (PR) в Git?

Ответ

Pull Request (PR) или Merge Request (MR) — это механизм в системах контроля версий (GitHub, GitLab, Bitbucket), который позволяет предложить изменения из одной ветки репозитория в другую и организовать их обсуждение (code review) перед слиянием (merge).

Типичный рабочий процесс с PR:

  1. Создание ветки: Разработчик создаёт feature-ветку от main/master.
    git checkout -b feature/new-authentication
  2. Внесение изменений: Делаются коммиты с новой функциональностью или исправлениями.
    git add .
    git commit -m "Add OAuth2 login flow"
    git push origin feature/new-authentication
  3. Создание PR: Через веб-интерфейс создаётся запрос на слияние ветки feature/new-authentication в main. Добавляется описание изменений.
  4. Ревью кода: Члены команды проверяют код, оставляют комментарии, запрашивают правки.
  5. Слияние: После одобрения и прохождения CI-проверок изменения мержатся в целевую ветку. Ветка-источник обычно удаляется.

Цели PR:

  • Контроль качества: Обнаружение ошибок и улучшение кода до его попадания в основную ветку.
  • Обмен знаниями: Команда знакомится с новыми изменениями.
  • Документирование: История обсуждений в PR служит документацией к принятым решениям.

Ответ 18+ 🔞

А, ну это про эти ваши пулл-реквесты, да? Ну, слушай, сейчас я тебе так объясню, что даже менеджер поймёт, хотя это вряд ли, конечно.

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

git checkout -b feature/my-fucking-fountain

Ты там накодил, накосячил, натыкал кучу говнокода, но вроде как фонтан брызгает. Теперь, чтобы твой «шедевр» перенесли на главную дорогу, нужно всем остальным его показать и спросить: «Ну как, ребята, а?».

И вот ты создаёшь этот самый пулл-реквест — это типа официальная бумажка с вопросом: «Мужики, можно мой фонтан, а?». И начинается самое весёлое, ёпта!

Ревью кода — это когда вся команда смотрит на твой фонтан и начинает нести пургу:

  • «А почему тут, сука, трубы из соломы?»
  • «А вода-то из канализации течёт, ты что, совсем?»
  • «Добавь, блядь, ещё одну статую голого Аполлона, без него никуда!»

Ты бегаешь, всё переделываешь, пока все не успокоятся или пока тимлид не скажет: «Да похуй, мержьте уже, надоел этот фонтан!».

И только после всех этих плясок с бубном, когда CI-пайплайн (это такие автоматические тесты-надзиратели) не сломался и все согласны, твой код мержится в main. А твою временную строительную площадку — ветку — обычно сносят к хуям, чтобы не засоряла список.

А зачем весь этот цирк, спросишь?

  1. Чтобы не сломать всё к херам. Чтобы твой экспериментальный фонтан с канализационной водой не залил всю основную магистраль.
  2. Чтобы не быть мудаком-одиночкой. Все видят, что ты делаешь, могут подсказать или, наоборот, спиздить твои крутые идеи.
  3. Для истории. Через полгода, когда фонтан начнёт извергать говно, можно будет зайти в тот старый PR и узнать, чья же, блядь, это была гениальная идея — использовать трубы от «Жигулей».

Вот и вся магия. Не просто так код пихают, а с прицепом обсуждений, претензий и попытками сохранить хоть какое-то подобие качества. А то без этого был бы один сплошной говнокод, как в том самом лесу, где Герасим Муму топил, помнишь? Вот чтобы такого не было.