I recently moved my homedir into Subversion, and now I can't imagine life without it. Assuming that you've set up Subversion on a server someplace, the two things I had to do were: 1) exempt dotfiles from the repository, 2) symlink dotfiles I needed to their actual repository location. E.g.:
box0 2167$ ls -al
total 776
drwxr-xr-x 18 phaller wheel 4096 Nov 15 17:29 .
drwxr-xr-x 4 phaller root 4096 Nov 14 19:32 ..
-rw------- 1 phaller wheel 11190 Nov 15 08:22 .bash_history
lrwxrwxrwx 1 phaller wheel 15 Nov 9 23:27 .bash_logout -> etc/bash_logout
lrwxrwxrwx 1 phaller wheel 16 Nov 7 22:18 .bash_profile -> etc/bash_profile
lrwxrwxrwx 1 phaller wheel 10 Nov 7 22:17 .bashrc -> etc/bashrc
drwxr-x--- 5 phaller wheel 4096 Nov 15 07:47 .cpan
-rw------- 1 phaller wheel 67 Nov 15 08:15 .cvspass
-rw-r----- 1 phaller wheel 659056 Nov 14 17:49 .fonts.cache-1
drwxr-x--- 3 phaller wheel 4096 Nov 7 22:50 .fullcircle
lrwxrwxrwx 1 phaller wheel 9 Nov 7 22:18 .gnupg -> etc/gnupg
-r--r----- 1 phaller wheel 8 Nov 9 17:36 .hwid
-rw------- 1 phaller wheel 214 Nov 15 17:19 .lesshst
drwx------ 3 phaller wheel 4096 Nov 10 06:08 .macromedia
drwxr-x--- 16 phaller wheel 4096 Nov 13 23:08 .maildir
drwx------ 3 phaller wheel 4096 Nov 7 22:50 .mozilla
drwxr-x--- 2 phaller wheel 4096 Nov 14 07:27 .mplayer
lrwxrwxrwx 1 phaller wheel 9 Nov 10 19:15 .mutt -> etc/mutt/
drwx------ 3 phaller wheel 4096 Nov 15 17:26 .ooo-2.0
-rw------- 1 phaller wheel 326 Nov 14 08:10 .ratpoison_history
lrwxrwxrwx 1 phaller wheel 15 Nov 7 22:35 .ratpoisonrc -> etc/ratpoisonrc
-rw------- 1 phaller wheel 346 Nov 15 17:26 .recently-used
lrwxrwxrwx 1 phaller wheel 12 Nov 7 22:16 .screenrc -> etc/screenrc
lrwxrwxrwx 1 phaller wheel 7 Nov 8 18:05 .ssh -> etc/ssh
drwxr-xr-x 3 phaller wheel 4096 Nov 7 22:31 .subversion
drwxr-xr-x 7 phaller wheel 4096 Nov 15 08:12 .svn
drwx------ 2 phaller wheel 4096 Nov 14 00:10 .unison
-rw------- 1 phaller wheel 4582 Nov 14 00:10 .unison-log
-rw------- 1 phaller wheel 5800 Nov 15 17:29 .viminfo
lrwxrwxrwx 1 phaller wheel 9 Nov 7 22:16 .vimrc -> etc/vimrc
-rw-r----- 1 phaller wheel 1541 Nov 15 08:22 .xerrors
lrwxrwxrwx 1 phaller wheel 11 Nov 7 22:16 .xinitrc -> etc/xinitrc
lrwxrwxrwx 1 phaller wheel 13 Nov 7 22:21 .xserverrc -> etc/xserverrc
-rw-r----- 1 phaller wheel 1051 Nov 15 08:22 Makefile
drwxr-xr-x 3 phaller wheel 4096 Nov 15 07:50 bin
drwxr-xr-x 12 phaller wheel 4096 Nov 15 07:39 etc
drwxr-xr-x 3 phaller wheel 4096 Nov 15 07:48 lib
drwxr-xr-x 18 phaller wheel 4096 Nov 15 07:55 projects
drwxr-xr-x 12 phaller wheel 4096 Nov 15 08:15 var
As you can see, I have a couple main directories (bin, etc, lib, projects), which are all in subversion. The last main directory (var) is not in subversion and it's basically where I keep digital media and scratch files that I don't want revision controlled. To mark a file for non-inclusion in the repository, you set the svn:ignore property. For example, I want all my dotfiles to be not in revision control, so I create a file ~/etc/svn-ignore-hidden.lst:
*.swp
.[a-z]*
.[A-Z]*
.
..
and then run:
cd ${HOME}
svn propset svn:ignore -F etc/svn-ignore-hidden.lst .
That's it. I was able to cutover and rationalize my homedir on my home box, my laptop, and my colocated server in about 4 hours (including Subversion setup). So, it's not some crazy protracted evil battle to get it set up. ;)