"Easily solvable" is an understatement, though. Autosave should maintain parity with the undo buffer, and manual saves should be pointers to a specific point in time, like tags. The only way this gets complex is branching - if you go back in time and start making changes from there, do we just prune it, do we allow the user to go back and undo undo, or, if we have something decidedly less fucking garbage than MS Word, do we facilitate merging?