A while back I saw a blog post about keeping /etc under version control. The particular article talked about using Mercurial for this and built on an article that used git to do the same thing. The nice thing about this approach was that it hooked directly into Debian’s apt and made sure that your repository was synced before and after each package installation … which means that if you forget to sync your changes to the machine’s configuration yourself, the system will take care of it for you. I set out to do something similar myself and, just as I finished, I discovered Joey Hess’s etckeeper which supports git and Mercurial, but not Bazaar, my DVCS of choice. So I added it. The biggest problem I found was that bzr doesn’t support pre-commit hooks the same way that git and Mercurial do, but since etckeeper has pre-commit hooks, I just put the action there. This means that some of the meta-data could get out of sync if you do a “bzr commit” by hand, but until the start-commit hook is added, I think that is just the way things will have to be.