Of course, for serious development I use Git, but sometimes I just
hack around on a script, prepare a draft, or golf down some code and
want to keep old versions of a file. For this, I use
keep:
% keep foo
‘/home/chris/mess/2013/27/foo’ -> ‘/home/chris/mess/2013/27/foo.1’
% vi foo
% keep foo
‘/home/chris/mess/2013/27/foo’ -> ‘/home/chris/mess/2013/27/foo.2’
% keep foo
/home/chris/mess/2013/27/foo.2 not modified
As you can see, it creates numbered backup files—if the file has
changed. The major benefit over doing this manually (with cp foo
foo.1) is that it won’t ever overwrite an old revision accidentally
because you blindly used your shell history.
I have not yet felt the need to add diffs or restoring of old versions.
(Tom Duff has an interesting, but more complicated version of this program.)
NP: Lia Ices—After Is Always Before