Resolve conflicts interactively

tovio resolve, walking each one.

Written By Dustin

Last updated 6 minutes ago

tovio resolve

With no path and no strategy flag, this walks every open conflict, region by region. Pass a path alone to walk just that one:

tovio resolve src/app.rs

This is the only way to take different sides for different regions of the same file. The flag forms all resolve a whole file at once.

The region menu

For each conflicting region you get a unified ours-versus-theirs diff with the changed words highlighted, and a choice:

KeyDoes
oKeep our side of this region.
tKeep their side.
uKeep both.
bUse the common-ancestor text.
aShow the base, for reference.
eHand-merge this region inline.
dShow the full file.
sSkip — leave this region conflicted.
qQuit the walk.

Pressing Enter on its own re-prompts rather than picking something for you. A merge is not a place for a silent default.

No markers, no external editor

The walk never writes conflict markers into your files and never launches a merge tool. The e option edits the region inline, inside the walk. Whatever you choose, the file that lands cannot contain a stray marker line, because no marker was ever inserted to leave behind.

Skipping

Skip a region and the file is not rewritten at all — the walk needs a decision for every region before it can assemble a merged result. The path stays conflicted and the walk tells you how many regions you left open.

The choices you did make are still remembered for replay, so coming back to finish is not starting over.

It needs a terminal

The walk requires an interactive terminal. Under --json, --quiet, or a pipe it refuses with TVO-CONFLICT-012 instead of guessing. A script must name a strategy explicitly — which is the point.

When to use flags instead

tovio resolve <path> --ourstovio resolve <path> --theirs

A strategy flag always requires a path, and you may pass only one strategy at a time. There is no flag that applies one side to every conflict at once.

Inspecting before deciding

tovio cat <path> --side ourstovio cat <path> --side theirstovio cat <path> --side base

All three sides are intact while the conflict is open, including the common ancestor — often the fastest way to see what each side actually did.

Undo

tovio undo

A resolve is recorded in the op-log, so it reverses like any other operation.