I use CFEngine on my personal site to manage my configuration. I have an SVN repo on one box that I can push
configuration changes to, and then from there, the changes get pushed out to all of my boxes.
One problem that I encountered is that changes to my CFEngine configurations that had syntax errors would be
pushed out to all of my machines, and cause them to fallback to the failsafe configuration, which is less than
My solution was to write a pre-commit hook for my SVN repo that would prevent me from checking anything in that
would break my configuration.
This should be the pre-commit file in the hooks directory of your SVN repo. If that file exits with a non-zero code, the commit will fail.
The file must be executable by the svn user.