GitHub сделал stacked pull requests общедоступными

3 мин
GitHub сделал stacked pull requests общедоступными

GitHub заявил о полноценном запуске stacked pull requests — связанных пул-реквестов, которые позволяют разбивать крупные изменения на несколько небольших и зависимых друг от друга PR. Каждый из них можно отдельно смотреть, обсуждать и проверять, сохраняя одновременно контекст всей цепочки.

Наряду с переходом функции в общий доступ GitHub доработал слияние, ребейз, навигацию по стеку и автоматизацию.

Как работают связанные пул-реквесты

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

В частности:

main ← PR с базовой логикой ← PR с api ← PR с интерфейсом

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

По данным GitHub, с начала публичного тестирования в репозиториях, использующих стеки, объём слитого кода вырос на 9 процентов относительно сопоставимыми репозиториями. Среди 1% наиболее активных репозиториев стеки используют уже более двух третей; GitHub также отмечает у них сокращение времени до слияния около на 5 процентов.

Ребейз больше не должен сбрасывать согласования

Одно из заметных изменений касается Rebase stack.

Если основная ветка, например main, ушла вперёд и стек пришлось перебазировать без изменения самого кода, ранее это могло привести к сбросу уже полученных одобрений. Теперь GitHub сохраняет их даже в репозиториях, где включено автоматическое исключение устаревших согласований.

Кроме того, при ребейзе GitHub создаёт подписанные замещающие коммиты и сохраняет исходное авторство. Автоматический ребейз после частичного слияния стека также подписывает новые коммиты, когда этого требуют правила ветки или исходные коммиты уже были подписаны.

Изменилось слияние стеков

Права на обход правил репозитория теперь распространяются и на стеки. Потребитель с соответствующими разрешениями может применить их к нижнему ещё не слитому PR.

Для репозиториев с очередью слияния весь выбранный участок стека теперь попадает в неё как единая группа. При использовании обычных merge-коммитов GitHub при этом создаёт отдельный merge-коммит для каждого пул-реквеста, а не один общий на всю группу.

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

В ближайшие недели также появится автоматическое слияние стеков. Можно будет выбрать некоторое количество связанных PR, после чего GitHub сольёт их вместе, как только все проверки и требования репозитория будут выполнены.

Стек теперь лучше виден в интерфейсе

Информация о стеке постоянно отображается в заголовке страницы пул-реквеста. Увидеть принадлежность PR к стеку можно и в общем списке пул-реквестов.

Для перехода между уровнями добавили сочетания Shift + J и Shift + K.

GitHub также начал фиксировать в истории PR события добавления и удаления из стека. В webhook pull_request появился свежий тип события stacked, который срабатывает при добавлении пул-реквеста в стек.

Что изменилось в GitHub CLI

Для работы со стеками из командной строки используется расширение gh stack. Оно умеет создавать последовательность зависимых веток и PR, отправлять весь стек в GitHub и выполнять каскадный ребейз.

В новой версии плагин также поддерживает Git worktree. GitHub доработал и операции инициализации, переключения между ветками и навигации по стеку.

Stacked pull requests уже доступны на всех тарифах github.com. Поддержку равным образом планируют добавить в одну из следующих версий GitHub Enterprise Server.

Расписание бесплатных IT-вебинаров на октябрь уже доступно в календаре.

Читают сейчас

Основной враг ремейков Resident Evil — идеализированные воспоминания геймеров

8 минут назад

Основной враг ремейков Resident Evil — идеализированные воспоминания геймеров

Разработка ремейков классических игр требует глубокого понимания психологии аудитории. Продюсер серии Resident Evil Есиаки Хирабаяси рассказал, с какой главной сложностью сталкивается команда Capcom п

Неожиданный октябрьский RC3-релиз и другие новости Python

27 минут назад

Неожиданный октябрьский RC3-релиз и другие новости Python

Python 3.15 внезапно получил третью версию кандидата на версия из-за обнаруженных в последний момент ошибок, связанных с lazy-import, в итоге чего финальный релиз был перенесен на 9 октября. Одновреме

ИИ Claude построил опасный маршрут на гору для подростка

40 минут назад

ИИ Claude построил опасный маршрут на гору для подростка

16-летний подросток чуть не погиб у скального участка под названием «Widowmaker Arete» (“Гребень „Вдоводел“”) на горе Краун (Crown Mountain) в Британской Колумбии. Он попал туда, следуя маршруту, кото

«Сферум» запустил служба с информацией об олимпиадах для школьников

50 минут назад

«Сферум» запустил служба с информацией об олимпиадах для школьников

Образовательная платформа «Сферум» запустила сервис «Олимпиады», где собрана информация о соревнованиях для школьников по различным предметам и направлениям, рассказали у в пресс‑службе компании. Чита

1 час назад

Минцифры предложило ввести плату за отправку юридически значимых сообщений через «Госуслуги»

Минцифры опубликовало инициатива постановления, согласно которому пересылка некоторых сообщений через «Госуслуги» станет платной для большинства категорий отправителей. Документ утверждает положение о