I like to keep the configuration files of a set of servers in version control, mostly to be able to document changes, to keep boxes in sync and to be able to undo changes, of course.

I’d like to keep as much of my configuration shared as possible, obviously. And I’d like to be able to modify files in all “branches” at the same time.

If I forget everything I know of revision control systems, I would describe it as: I have a base configuration database I can use the same way as I do it for sourcecode. Then I’d like to have a set of “diversions”, of course also in revision control. This is machine specific, and changes I do here only apply to that specific machine.

You could also call this copy-on-write branches - as long as I havn’t modified the file in the branch, I’d like it to auto-merge the changes done to the revision I forked from…

Of course I could do that using regular branches and then merging changes to the trunk into my branches. But this means I’d have to merge these into each of my machines branch, then go to each of the machines and checkout… That’s kind of annoying… :-(

Well, any expert here with a nice solution for me (and especially one I can explain to others in a few sentences…)