GitHub 6 октября завершил публичное тестирование stacked pull requests и открыл функцию на всех тарифах github.com. Это цепочки из двух или более зависимых пул-реквестов: первый обычно направлен в основную ветку, а каждый следующий опирается на ветку предыдущего.
Вместо одного крупного изменения разработчик может последовательно подготовить базовую логику, API и интерфейс. Каждый пул-реквест показывает изменения только своего уровня. Поэтому части можно проверять отдельно, а работу над следующей продолжать, не дожидаясь слияния предыдущей.
Вместе с общим запуском GitHub доработал перебазирование и слияние стеков. Если основная ветка обновилась, но проверяемый код не изменился, Rebase stack сохраняет полученные одобрения. Замещающие коммиты остаются подписанными и сохраняют исходное авторство.
Сливать цепочку нужно снизу вверх. Можно объединить весь стек или его непрерывную нижнюю часть: пул-реквесты выше останутся открытыми и автоматически получат новую базовую ветку. Очередь слияния обрабатывает выбранную часть стека как единую группу. Автоматическое слияние связанных PR после прохождения всех проверок GitHub разворачивает поэтапно в течение нескольких недель, поэтому оно может быть доступно ещё не во всех репозиториях.
По данным GitHub, после начала публичного тестирования объём слитого кода в репозиториях со стеками оказался на 9% выше, чем у сопоставимых проектов. Более двух третей репозиториев из верхнего 1% по активности используют функцию; GitHub также сообщает об улучшении времени до слияния на 5%. Компания не доказала, что причиной этих различий стали именно стеки.
Что это значит
- Для разработчиков. Большую задачу можно разделить на небольшие зависимые части, которые проще отдельно читать, обсуждать и дорабатывать. Проверки GitHub Actions и правила защиты веток действуют на каждом уровне.
- Для команд в России. Отдельный платный тариф для функции не нужен: GitHub заявляет доступность на всех планах github.com. В источниках нет отдельных условий запуска для российских аккаунтов.
- Для начала работы. Создавать стеки можно на сайте GitHub или через расширение
gh stackдля GitHub CLI.
Все ветки цепочки должны находиться в одном репозитории: стеки между форками не поддерживаются. Функция также пока не работает в GitHub Desktop. Поддержку GitHub Enterprise Server компания обещает добавить в одном из следующих выпусков, но версию и дату не называет.

