Today I finished importing my home directory into Subversion. I
did this because I needed an easy way to keep files in sync between my
desktop and laptop and rsync was not cutting it.
I first thought of this after reading the new O’Rielly book on
Safari called Mind Performance Hacks. There is a hack that is
about productivity and it talked about setting up a version controlled
home directory (half jokingly). It also had a link to Joey’s svnhome which got
me started.
I did not follow the same ideas that Joey’s svnhome had or even $HOME in Subversion, another page
I found from Google. Instead I went my own way and am proud to say
that it is now working and I have the majority of my files into a
subversion repository.
Here is a quick layout, I will be able to get into more details later
on, as I test it out. Here is the main repository layout.
https://svn.www.freelancingdigest.com/home * bin/ * dev/ * doc/ * dotfiles/
Each of these corresponds to a folder in my home, other than dotfiles.
So ls -l /home/eric
provides four folders (tmp is unversioned):
drwxr-xr-x 3 eric eric 4096 2006-04-04 16:37 bin drwxr-xr-x 15 eric eric 4096 2006-04-04 16:59 dev drwxr-xr-x 31 eric eric 4096 2006-04-04 22:32 doc drwxr-xr-x 3 eric eric 4096 2006-04-04 20:46 tmp
The subversion URL for this is to the dotfiles folder aka
“https://svn.www.freelancingdigest.com/home/dotfiles”. Inside here I have some
svn:excludes but mainly I have my svn:externals to pull from external
repositories (or a different path in the same repository). My
svn:externals looks like this:
eric@raptor:~$ svn propedit svn:externals . bin https://svn.www.freelancingdigest.com/home/bin/ dev https://svn.www.freelancingdigest.com/home/dev/ doc https://svn.www.freelancingdigest.com/home/doc/
So when I do a svn update in my home folder, Subversion will first
grab my dotfiles area, then will grab my bin, dev, and doc area
updating each as it goes. Here is a transcript (note: I have more
svn:externals inside of dev/ and doc/)
eric@raptor:~$ svn up Fetching external item into 'bin' External at revision 47. Fetching external item into 'dev' Fetching external item into 'dev/ARS/support-site' External at revision 370. At revision 47. Fetching external item into 'doc' Fetching external item into 'doc/T/Todo' External at revision 26. At revision 47. At revision 47.
It is pretty verbose but I will go through and grab all the updates at
once. Stay tuned and I will document what I did to set this all up in
more detail.
Eric Davis