Using source control to manage system configs

Rob freebsd at
Sun Feb 25 22:03:12 UTC 2007

Dear List,

I'd like some advice on managing config files on multiple servers  
with a source control system. The idea is to update files locally,  
and commit them back to a central repository.

I know that CVS is the usual choice, but there are a couple of things  
that I can't get CVS to do.

Overlapping directories

Some files (/etc/ntp.conf, /etc/resolv.conf) are identical across a  
site. Instead of duplicating these in the repository, I'd like to  
create a module like


that gets installed on every server.

Then each server has a module like


that adds to or overwrites these files. If a file is updated locally,  
it is committed back to the correct module.

CVS (quite reasonably) won't checkout 2 modules to the same working  

Filemodes & symlinks

CVS only works with regular files, and doesn't preserve permissions.  
I can work around this with mtree(8) and module programs, but it  
would be nice to have it built-in.

So... has anyone come up with a neat way to do these things in CVS,  
or an SCM system that does it better?


More information about the freebsd-questions mailing list