12. History, branches and merging

Names are the only mutable thing in a codebase, so history is a log of name changes.

12.1 Reviewing changes: ucm diff

ucm diff reviews changes by meaning: what the last command changed, or ucm diff <id> since a history entry, ucm diff <branch> against another branch, ucm diff <a> <b> between two branches.

12.2 History and undo

12.3 Branches

ucm branch [name] lists or creates branches; ucm switch <name> changes branch. A branch is a set of names; the definitions themselves are shared.

12.4 Merging

ucm merge <branch> is a three-way merge of names, against the other branch as of the last merge, sync or fork.

12.5 ucm todo

Conflicts, plus dependents that stopped typechecking after an update or merge. ucm edit them, fix, and ucm update.

built from 5890e54f