I do this for several machines, ranging from old Solaris 8 boxes to Mac OS X, and I have a really simple layout:
In my repository I have the following:
<root>/common
/.emacs.d
/.bash_common
/scripts # platform-independent binary tools
<root>/linux
.bashrc
.emacs
...
<root>/solaris
.bashrc
.emacs
...
<root>/osx
.bashrc
.emacs
...
Each of the OS homedirs has an svn:externals reference to .emacs.d, .bash_common, and scripts, so those are not duplicated.
In addition, I have a .bash_hostconfig in the linux and solaris directories with host-specific path configuration and such, because I have a very different setup at work than I do at home (FC5-8 and RHEL3-5, depending on where I am).
So, between these things, I have a pretty simple process for getting up and running on a new machine: I simply check out the /$platform into a temporary directory, and then overwrite everything in $HOME with those files. I don't need to store the original path, because it's always relative to $HOME this way.