EnglishРусский Map

Стековые 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 (дополнительные инструменты не требуются).