Most of the sites I've worked on that require different configuration settings on the live site than they do on the dev boxes, or that have multiple live sites (each with their own settings), tend to have the conf files in place on the server and nowhere else. The problem is that the same file has to be in different states for each server. I've also seen the same thing happen when instead of server specific settings they were customer specific settings, like customer name and logo for a customer specific installation. But not backing these up in version control is just crazy. What if your server goes up in flames?
This is an incredibly easy problem to fix. You just make a folder for each type of conf file, naming it, and them in some sensible way. For example: let's say you're using Apache and need a different http.include file for each server. Just make an http_includes folder and fill it with files named server_foo.http.include, server_bar.http.include, etc.. If you're using an automated deployment tool you can just configure it to copy the appropriate file out of there, stick it in the appropriate place for the server to find it, and rename it accordingly. And, since you're almost never going to have to actually touch those files, it's not a big deal to do the same thing manually. You can do the exact same thing for customer specific files.
K. Rhodes 2007-05-18