Diff your working copy

tovio diff, against the last commit — and the diffs that are not it.

Written By Dustin

Last updated 29 minutes ago

tovio diff

Shows what you have changed since the last commit. Because there is no index, there is only one diff to think about — no distinction between staged and unstaged, and nothing to add first.

diff takes no flags of its own. The globals still apply (--json, --quiet), but there is no --stat, no --cached, and no revision arguments. Comparing two revisions is a different command — see below.

Protected paths

A diff involving content you are entitled to read decrypts for you. Content you are not entitled to read is not disclosed — the diff shows that the path changed without showing what it changed to. This holds everywhere, including in review.

Reviewing a change rather than the working copy

tovio change show <id> --difftovio review <change_id>

review renders a change's diff against its base with protected paths redacted according to what the reader is cleared for: a clear path diffs normally, a protected path you can decrypt shows its decrypted diff, and a protected path you cannot shows only a locked marker and a coarse change indicator. It ends with a coverage summary. change show --diff delegates to the same renderer.

Comparing two commits

tovio semantic diff <old> <new>tovio semantic diff              # HEAD's first parent vs HEAD

Compares the symbol graphs of two commits and flags breaking interface changes rather than textual ones — often the diff you actually wanted. Both arguments are optional and take a blake3:<hex> or bare hex address.

Searching instead of diffing

tovio grep <pattern>tovio log -S <string>

When the question is “where is this” rather than “what did I change”, grep searches content and log -S searches history.