Work with a stack of changes
Stacking, what --stack actually shows, and how a stack lands.
Written By Dustin
Last updated 24 minutes ago
A stack is a sequence of changes each based on the one below — a way to break a large piece of work into reviewable pieces without waiting for each to land.
Building one
Create a change, commit, create another. Each tovio change new with no --base stacks on the current change; --base <lane> breaks out to a parallel track instead.
tovio change listLists every change newest-first with its tip, description and state.
What --stack shows
tovio change list --stackAppends the recorded dependency edges — the puller -> pulled pairs created by tovio change pull — under the listing. It is the answer to "whose unlanded work am I building on", not a drawing of the parent chain. For the parent chain itself use tovio log, or:
tovio explain lanestovio explain lanes --format html > lanes.htmlThe multi-lane timeline: how lanes progress in parallel, branch off, and rejoin.
Landing
Changes land bottom-up, and landing the base of a stack does not orphan what sits above it. TOVIO re-derives the descendant lanes onto the landed result through a path-scoped cascade, and every change id survives. If a descendant pointer could not be advanced the land still succeeded and you get TVO-OP-032 naming the lanes that were left on the old base.
tovio rebase --onto main # re-stack by handtovio change rebase chg:start..chg:tip --onto main # or an explicit rangeKeep the stack linear
Every rewrite in the change family — rebase, split and absorb — refuses to cross a merge commit, and refuses a range that is ambiguous because the change belongs to several live lanes. A stack you intend to reparent should stay a linear first-parent chain. See "Rebase a lane onto another" for the exact refusals and how to name a range explicitly.
Landing part of one
tovio change split chg:a3f7b2 --paths 'src/api/**'Why stacks work better here
Stacked work in Git is painful because every rebase rewrites hashes and detaches reviews. Change ids survive rebases, so a stack can be reparented repeatedly without losing its reviews.