It's impossible not to note that emacs does this well too. Setting
(setq backup-directory-alist `(("." "/home/user/some/dir/you/chose/backup/))
version-control t
kept-new-versions 50
kept-old-versions 50)
sets up a directory with many versions of every file ever edited. Additionally (setq auto-save-file-name-transforms `((".*" "/home/user/some/dir/you/chose/auto-save/" t)))
does the same for even unsaved changes.