Stage, commit, branch
Edit files, stage them, commit a snapshot and manage branches, all through a git-style prompt.
Model Git's own data
A commit holds a tree of file and folder nodes, close to Git's own tree and blob objects, and is saved to disk as JSON.
Core in place, gaps listed
Staging, commits and branches are implemented. Restoring old commits, merging and remotes are not built yet. But with the core in place they can be added easily.