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 forpost-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 usinggit 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).