GitHub перевел стекированные pull request в режим публичного превью, позволяя разработчикам разбивать крупные изменения на цепочку зависимых PR, которые можно проверять и объединять независимо друг от друга.

Почему эта функция важна

Одиночный монолитный PR часто разрастается до месяца проверки, при этом ревьюерам приходится продираться сквозь несвязанный код. Когда базовая ветка уходит вперед, такие массивные изменения становятся склонны к конфликтам слияния, что задерживает релизы. Стекированные PR решают обе проблемы, превращая один большой дифф в серию небольших, сфокусированных диффов, каждый из которых строится на основе предыдущего.

Как это работает

Создайте первый PR к основной ветке, затем сделайте следующий PR зависимым от первого, третий — от второго и так далее. GitHub автоматически отслеживает связи: если вы вносите изменения в базовый PR, зависимые PR обновляются, чтобы отразить новое состояние. Ревьюеры могут одобрить весь стек одним кликом или проверять отдельные слои.

  • Обзор остается в узких рамках, что ускоряет получение обратной связи.
  • Количество конфликтов снижается, так как каждый PR затрагивает только тот код, который был внесен в его собственном слое.
  • Интерфейс отображает иерархию стека, а GitHub CLI предлагает команду в одну строку для создания серии стекированных PR.
gh pr create --title Feature A --base main
gh pr create --title Feature B --base feature-a
gh pr create --title Feature C --base feature-b

Пример командной строки создает три связанных PR, каждый из которых зависит от предыдущего. Тот же рабочий процесс доступен через веб-интерфейс, где вы можете изменять порядок или удалять PR из стека, не нарушая работу остальных.

Кому это принесет пользу

Большие продуктовые команды и мейнтейнеры open-source проектов могут выпускать инкрементальные изменения, не заставляя ревьюеров разбираться в несвязанных правках. Менеджеры релизов получают более четкую картину того, что готово к выпуску, поскольку каждый слой стека может быть объединен по своему собственному графику.

Нюансы, которые стоит учитывать

Функция все еще находится в режиме превью, поэтому она может измениться до полноценного релиза. Командам придется внедрять новые привычки в работе с ветками, и они могут столкнуться с пограничными случаями при ребейзе стека, который уже был частично объединен. Документация все еще дополняется, поэтому ранним последователям может потребоваться дополнительное время на изучение подсказок интерфейса.

За чем следить дальше

GitHub, вероятно, внедрит более тесную интеграцию с code-owners и инструментами автоматизации, а также может предоставить метрики по сокращению количества конфликтов. Следите за страницей анонса превью, чтобы узнать о сроках выхода GA (общедоступной версии).

Итог: Стекированные pull request дают разработчикам практический способ обуздать масштабные изменения, превращая один тяжелый, конфликтный PR в управляемую, удобную для проверки последовательность. Если ваш рабочий процесс страдает от долгих проверок и проблем со слиянием, превью стоит протестировать.