Managing Your Configuration Files Using Subversion

When you have accounts in dozens and dozens of servers, it could be hard to replicate and keep track of all your configuration files (aka. rc files). To be honest, that's the reason why I never used rc files in the past, and always tried to stick with the default behavior of programs. But, for some time now, I've been using Subversion to keep and manage my personal rc files and it has proven extremely useful. If you don't know Subversion I recommend you to read about it, even if you don't plan to use it for development. It's a great tool for keeping track of files, not necessarily source code. The Subversion book is the reference, but you can also find plenty of tutorials online.

So the idea is simple: just use Subversion (SVN) to keep track of your configuration files, like you would use it to keep track of source code.

To create a repository for your personal rc files you would do something like this:

cd ~
svn mkdir -m "adding pablo rcfiles" https://svn.insophia.com/rcfiles/pablo
svn co https://svn.insophia.com/rcfiles/pablo .

Then, when you want to add some configuration files to revision control you would do:

cd ~
svn add .vimrc
svn ci -m "added vimrc to rcfiles"

Finally, when you edit some configuration files you can commit in one server and then run "svn up" in the all rest to synchronize to the last version, so you only need to modify your configuration files once, which is great. Also, if by some reason you broke a configuration file you could always revert to any prior version of the file (SVN provides this functionality). So, this is useful even if you don't have accounts in multiple servers.

We also use this approach at Insophia to manage the configuration files of our servers, and it has proven equally useful.