What solutions exist to allow the use of revision control for server configuration files? [closed]

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

Leave a Comment