Стековые PR
- title
- Стековые PR
- type
- concept
- summary
- Конвейеризация код-ревью через цепочки зависимых PR; рабочий процесс, вскрывающий нехватку примитива коммитов-преемников в Git
- tags
- version-control, workflow, code-review
- created
- 2026-05-21
- updated
- 2026-05-21
- lang
- ru
- translation_of
- stacked-prs
- source_updated
- 2026-05-21
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Стековые PR (stacked PRs) - это рабочий процесс, при котором вы пишете PR 1, отправляете его, пишете PR 2 поверх ветки PR 1, отправляете PR 2, пишете PR 3 поверх него и так далее - не дожидаясь вливания ни одного из них. Конвейеризация CPU, применённая к код-ревью. Основная цель - пропускная способность при задержках из-за разных часовых поясов: если ревью занимает 12 часов и без этого вы бы простаивали, стеки позволяют сохранять продуктивность.
Почему это работает
- Ревьюер всё равно читает PR по одному.
- Каждый PR остаётся небольшим и сфокусированным (каким и должен быть: неаккуратные PR в стеках становятся только хуже).
- Влитый PR делает rebase остатка стека вперёд; jj выполняет это за одну операцию, инструменты для Git симулируют такое поведение через внешние метаданные.
Почему в Git это сложно
В Git нет понятия коммитов-преемников и нет понятия стека как полноправного объекта. Инструменты вроде Graphite обходят это ограничение, храня метаданные веток отдельно за пределами Git, что приводит к рассинхронизации в тот же момент, когда вы напрямую выполняете команды Git. Полная версия этого аргумента описана в billjings-git-not-fine.
Почему в jj это просто
jujutsu отделяет идентификатор изменения от хеша коммита. Rebase стека вперёд выполняется одной командой; стек целиком доступен для запросов; конфликты, возникающие в середине стека, сохраняются прямо в коммитах, а не в особом состоянии рабочего процесса.
Где это встречается
Такой рабочий процесс становится всё популярнее, потому что ИИ-агенты для написания кода генерируют гораздо больше параллельной работы в процессе, чем когда-либо делали команды людей. О сопутствующем эффекте см. в agent-principal-agent-problem (Crawshaw о резком снижении затрат на ревью): как только генерировать небольшие PR становится дёшево, следующим узким местом становится способность инструментов справляться со стеком из них.
Инструменты, поддерживающие стековые PR сегодня:
gh-stack- расширение для GitHub CLI для управления стеками через gh.- Graphite - коммерческий инструмент для работы со стеками, использует внешнее хранилище метаданных.
git-spice,git-sprи несколько утилит поменьше.- Нативные рабочие процессы jj (дополнительные инструменты не требуются).