This tutorial demonstrates Pijul, a version control system based on a solid theory of patches, which is an efficient, algorithmic version of a construction from category theory.
The project was started to solve the complexity problems Darcs had, but then unlike Darcs, Pijul has a consistent theory (in particular, we have a sane internal representation of conflicts).
Pijul also solves many problems Git has:
Pijul patches commute, which mean we can cherry-pick multiple times from the same remote without introducing bizarre conflicts. This allows for instance to pull partial repositories, and in some cases to edit a very old patch without touching any other.
Pijul patches are associative: pulling patches A and B together is guaranteed to give the same result as pulling them separately (this is not always the case in Git).
Therefore, this tutorial can be of interest to industrial users. Researchers might also be interested in seeing how we turned an abstract construction into something efficient. Moreover, some of the tools we developed are totally reusable in other functional programming projects. For instance, we had to write a project called Sanakirja, which is a referentially transparent on-disk key-value store that can be forked in O(log n).