Land only part of a change

tovio change split, for when half your work is ready.

Written By Dustin

Last updated 28 minutes ago

tovio change split --paths 'src/parser/**'tovio change split chg:a3f7b2 --paths 'docs/**' --paths 'README.md'

Carves the files matching --paths into a fresh ready sub-change that can land on its own, and leaves the rest as the remainder. --paths is repeatable and at least one is required. Omit the id to split your current change.

The result is a three-link chain: parent → ready → remainder. The remainder keeps the original change's id — so its review history stays attached — and stacks on top of the new sub-change, which gets a fresh chg: id of its own.

When you want this

  • A change grew and only part of it is reviewed.
  • A bug fix got tangled with a refactor and the fix should ship now.
  • A reviewer approved some files and questioned others.

Partial landing is always split-then-land. There is no per-file cherry-pick.

What it refuses

  • TVO-OP-013 — the named change is not a lane tip. It has committed descendants and splitting it would orphan them, so split the tip instead.
  • TVO-OP-014 — the target is a merge commit; splitting one would drop its second-parent lineage.
  • TVO-OP-015 — the partition is degenerate: the globs matched none of the change's files, or all of them. A split must produce two non-empty parts. tovio diff shows what it touched.

Check before landing

tovio change health <new-id>tovio land --dry-run

Splitting by path can produce a piece that is coherent to the merge algebra but does not compile on its own. change health tells you it is landable; only your own build tells you it is correct.

Undo

tovio undo