We currently have an Ops guy who made all his colleagues put everything in Puppet and all of that in a Subversion repo. Us devs also have read access to the prod boxes so we can verify things like config changes have been done. We've caught Ops out a few too many times to relinquish that!

Unfortunately, I currently work with a senior developer who doesn't believe in external configuration files, mostly because they have an ownership problem and if they're missing the app crashes (to which my solution is to make the internal defaults Production so that it at least Works). He's been batting for wrapping them up into the code-artefact and select them via per-environment invocation. The attraction is that *we* get to version-control the settings. The downside is that you need to do a full code-deploy to override any of them.

Theoretically, of course, we can make some step of the build or deploy process pull in external configuration files from another repo. But it all seems inordinately complicated to me.

Wade.