Resolve a delete-modify or rename-rename
The typed conflicts, and their own flags.
Written By Dustin
Last updated 10 minutes ago
Not every conflict is two edits to the same lines. TOVIO types them, so each gets a resolution that actually fits the disagreement instead of a text merge applied to something that is not a text disagreement.
Delete-modify and modify-delete
One side deleted the file; the other changed it.
tovio resolve <path> --keeptovio resolve <path> --delete--keep keeps the file with the modification. --delete honours the deletion.
These are two types, not one: delete-modify is our side deleting and theirs modifying, modify-delete is the reverse. Both take the same pair of flags, and the type tells you which side you are overruling.
Rename-rename
Both sides renamed the same file to different names.
tovio resolve <path> --rename-to <path>You pick the name it lands under — including a third name neither side chose. The conflict records both divergent targets, so nothing is inferred.
This is typed rather than guessed because tovio mv records moves instead of reconstructing them from content similarity. The conflict is a fact, not a heuristic that got confused.
Rename-edit
One side renamed the file, the other edited it, and the edits overlap the rename. Resolve it as content: by side, by the interactive walk, or by hand with --working-tree. A rename with a non-overlapping edit never becomes a conflict at all — it merges.
Add-add
Both sides created a file at the same path with different content. Resolve by side, by the walk, or by editing and using --working-tree.
One caution: an add-add conflict has no meaningful common ancestor, so --base here means "neither file" and removes the path. The editor extensions leave --base off the menu for this type for exactly that reason.
Mode and entry-kind
Two disagreements that are not about content at all. A mode conflict means the sides agree on the bytes but disagree on the file mode. An entry-kind conflict means they disagree on what the entry is — a file on one side, a symlink on the other. Both carry each side's value, and both resolve by picking a side:
tovio resolve <path> --ourstovio resolve <path> --theirsNeither can be resolved from the working tree: there is no byte content to accept, so --working-tree is refused with TVO-CONFLICT-015 rather than silently doing something arbitrary.
Seeing which type you have
tovio conflictstovio status --conflicts