Widgy comes with an optional but powerful versioning system inspired by Git. Versioning works by putting another model called a version tracker between the owner and the root node. Just like in Git, each VersionTracker has a reference to a current working copy and then a list of commits. A VersionCommit is a frozen snapshot of the tree.

Versioning also supports delayed publishing of commits. Normally commits will be visible immediately, but it is possible to set a publish time for a commit that allows a user to future publish content.

To enable versioning, all you need to do is use widgy.db.fields.VersionedWidgyfield instead of widgy.db.fields.WidgyField.