List every open conflict

tovio conflicts, and reading what it tells you.

Written By Dustin

Last updated 8 minutes ago

tovio conflicts

Lists every open conflict in the change you are working in, each with its type and status, and points at the resolve command. It exits 0, because a conflict is attention, not failure.

The type matters more than the path: it decides which flags can resolve it.

The typed set

TypeWhat happenedResolve with
contentBoth sides changed the same region.--ours / --theirs / --base / --working-tree
delete-modifyOur side deleted the file; theirs modified it.--keep / --delete
modify-deleteOur side modified the file; theirs deleted it.--keep / --delete
add-addBoth sides created a file at the same path, differently.--ours / --theirs / --working-tree
rename-editOne side renamed the file, the other edited it, and the edits overlap.--ours / --theirs / --base / --working-tree
rename-renameBoth sides renamed the same file to different names.--rename-to <path>
modeThe sides agree on content but disagree on the file mode.--ours / --theirs / --base
entry-kindThe sides disagree on what the entry is — file versus symlink, say.--ours / --theirs / --base — one of the three is required; there is no default side.

Delete-modify and modify-delete are separate types rather than one symmetrical type, because which side did the deleting is exactly what you need to know to choose between --keep and --delete.

A rename whose accompanying edit does not overlap is not a conflict at all — it merges cleanly. Rename-edit only appears when the two genuinely collide.

Landability at a glance

tovio status --conflictstovio health

status --conflicts adds a read-only assessment of whether the lane lands cleanly. health reports lane conflicts whether you ask for them or not. Both exit 0 even when conflicted.

Machine-readable

tovio conflicts --json

--json is a global flag, so it works here as it does on any command. This is the contract the editor extensions render.

Then resolve

tovio resolve