I have kept parts of my home directory in a VCS for quite some time now. I’ve used different systems, currently I’m using git.
I use it to keep my scripts, configurations, aliases, and other small things in sync between the different Linux and Mac OS X machines I use.
My home directories all look about the same:
GNUstep/ bin/ etc/ html/ src/ tars/ .private/
Only GNUstep, bin, and etc are checked into git.
GNUstep/: Backgrounds, menus, widgets, dock apps, etc for WindowMaker, my current favorite window manager (though I am starting to play with awesome, and it is pretty awesome!).
bin/: Scripts shared across all machines. Sure, there are many things that are not required to in each different environment, but it is simple enough to stick them all in one place. Look at what I have in my bin directory! Scripts that should not be shared are usually a part of some other project, not in my bin directory.
etc/: All of my configuration files. Shared across all machines. Things that should not be shared or contain sensitive information go into .private/.
.private/: Private things like mail aliases, any passwords or keys that must be stored in files, and things that belong only on a single machine go here.
src/: My working area. If I’m working on a project that lives somewhere else, I’ll usually symlink it here just because my fingers really like typing src.
tars/: Cache of things I have downloaded. Every so often I clear out the old things I don’t need anymore.
html/: Pretty much everything else goes here. At work I keep as much public as I can, so any notes or patches I’m working on, todo lists, etc. end up here. Not checked into git, because it does not need to be synchronized, is always backed up using other methods, and should not contain things that change (otherwise it would be work and it would be checked in someplace else).
I only really use one script to keep it all working. I call it update-links it symlinks files from my ~/etc directory into my home directory. Some people do not like the extra symlinks, I like them because it makes the vcs-controlled dotfiles stand out.
References
- My bin directory
- svnhome – another writeup, this guy uses Subversion to manage his files.