Any suggestions for how to implement something that's about halfway between version control and a backup system? Specifics:
I've been playing around with git and mercurial, and discovering that neither really fit my particular needs. Specifically: I'm trying to backup / version control (yes, I know - two different things. Please read on.) mostly unrelated scripts living in the same directory, configuration files, excel files - stuff that doesn't behave like a "software project". I am the sole author of these files, and almost never need to merge changes. I backup the current version, and make my changes in the "live" copy. The most merging I would ever do is to grab, say, a line from an old config and splice it in to a new one. Or maybe diff against an old version.
What I currently have: a "bak" directory, where I copy date-named revisions manually. I also use Areca for incremental backup on a system-wide basis.
What I want:
- the ability to "check in" individual files in an extremely quick way (like 3 seconds / 2 clicks), basically as fast as I currently copy a file by hand. So either by context menu (windows), or command line (cygwin)
- the ability to browse previous versions in a gui (and ideally, graphically diff & restore them) that's arranged per file, or like a directory tree, since a lot of these things live together by aren't interdependent the way source code files are.
What git/hg is giving me:
- a commit history that's a giant linear chain that I have to hunt through for the versions of the file I'm interested in.
- a new set of commands to learn, some of which are fairly arcane
- no automatic retention of timestamps. I understand that this is by design - but I prefer to be able to glance through a directory listing, and see how old everything is.
- but at least commits are quick
What areca is giving me:
- a nice gui that is browseable in a way that I imagine is similar to Time Machine (though I don't have a mac), that presents everything as a directory structure parallel to the "real" one.
- retention of file metadata
- but running a full incremental is not cheap, in the way that committing a file is cheap
A "versioned file system" would be ideal, if I could store the backed up versions in a location of my choosing (possibly remote), and the format was human-readable... Oh, and I could control when it made the backups.
The best I can come up with is honestly "cp -p", or perhaps something clever with rsync that would let me do the incremental-rsync-with-hard-links thing, but be free to fire it off on a single file or small subtree at will.