We have a homegrown config management system and we'd like to add config file versioning to it in a simple way. My first thought was svn (or similiar), but I'm concerned with creating a repo in one location, just to check it out in another location on the same system. In this case we have no use for remote or even multiple checkouts. Is there a software versioning system that lives in one location (metadata+working copy) and will store only deltas? Some of our configuration nodes have large tarballs and binary installers.
Disks are cheap; networks are fast; data loss is no fun (been there, lost a couple of weeks of work). Having a repository in a separate location is a feature, not a bug. It costs pennies and can save you a lot of grief.
That said, if you really want to go down that path, maybe you can look at using a modern filesystem with built-in snapshotting. On Solaris I've used ZFS snapshotting as a poor-man's version control for years. On Linux, btrfs may well be getting close to usable.
Have you considered etckeeper?
It is an "in-place" versioning system which can rely (see its configuration) on most DVCS (
hg
,git
,bzr
ordarcs
).It automatically versions all your files in
/etc
and commits them automatically every time they are modified.Since it relies on DVCS, you could even use it to duplicate/backup your configuration using
push/pull/mirror/etc.
commands (depending on the DVCS backend you choose).Actually that's not that abnormal. There isn't any functional problem with handling things that way. Most VCS don't deal particularly well with tracking changes in a binary, so it's of less use for tracking changes, but it would still work. If you use a DVCS then you gain some protection against a single system failure. git or mercurial should be available for RH without too much trouble and either should work well for your needs, as would svn.