I have tested this at home (~ 3 hosts) for some time now, trying different scms (RCS, Subversion, git). The setup that works perfectly for me right now is git with the setgitperms hook.
Things you need to consider:
Handling of file permissions and ownership
- RCS: does this natively
- Subversion: last I tried, you needed a wrapper around
svn to do this - git: the
setgitperms hook handles this transparently (needs a fairly recent version of git with support for post-checkout hooks, though)
Also, if you don't want to all of your /etc under version control, but only the files that you actually modified (like me), you'll need an scm that supports this kind of use.
- RCS: works only on single files anyway.
- Subversion: I found this to be tricky.
- git: no probem, put "
*" in the top-level .gitignore file and add only those files you want using git add --force
Finally, there are some problematic directories under /etc where packages can drop config snippets that are then read by some program or daemon (/etc/cron.d, /etc/modprobe.d, etc.). Some of these programs are smart enough to ignore RCS files (e.g. cron), some are not (e.g. modprobe). Same thing with .svn directories. Again a big plus for git (only creates one top-level .git directory).