Undo Tree Package For Emacs.
The documentation comment is fantastic. One of the best uses of ascii I have seen in a while. http://www.dr-qubit.org/undo-tree/undo-tree.el
The package is actually of great use for people working with version control system allowing non-linear change history, such as the increasingly popular git and mercurial.
Here is a sample: